调用该方法的类代码如下。
package cn.jbit.class4; import java.util.Scanner; public class TestAdd { /** * 调用有参方法 */ public static void main(String[] args) { //实例化学生对象 Student student1=new Student(); student1.id=10; student1.name="王紫"; student1.age=18; student1.score=99; Student student2=new Student(); student2.id=11; student2.name="郝田"; student2.age=19; student2.score=60; //新增学生对象 StudentsBiz studentsBiz=new StudentsBiz(); studentsBiz.addStudent(student1); studentsBiz.addStudent(student2); studentsBiz.showStudents();//显示学生信息 } }
在示例 5 中, Student[] students = new Student[30] ; 表示声明了大小为 30 的学生对象数组,即数组 students 可以存储 30 个学生对象。
方法 addStudent (Student stu) 带有一个 Student 类型的参数,调用时将传递一个学生对象。就传递的参数而言,这里的 Student 类型的参数与前面学习的 int 、 String 等类型的参数相同,需要保证形参和实参的一致。程序运行结果如图 14.4 所示。
图 14.4 示例 5 的运行结果
注意:关于数组和对象作为参数的情况,大家先模仿示例,掌握其基本用法,在第二学期会进行更深入的学习。
14.2.3 技能训练
上机练习3
指导——实现对客户姓名的排序
训练要点
带参方法的调用。
数组作为方法的参数。
需求说明
编写方法,实现对客户姓名的排序。程序运行结果如图所示。
图 14.5 上机练习 3 的运行结果
实现思路及关键代码
(1) 利用数组存储学生姓名。
(2) 定义一个方法来实现姓名排序,该方法的参数为排序前的姓名数组。
(3) 创建测试类,调用排序的方法,并输出排序前和排序后的姓名信息。
参考解决方案
第一种方法:
package cn.jbit.test3; import java.util.Arrays; /* * 实现客户信息的管理 * */ public class Custmoer { public void show(String[] names) { System.out.println("**************排序前**************"); for (String string : names) { //增强for循环,遍历 System.out.print(string + " "); } Arrays.sort(names); System.out.println("\n**************排序后**************"); for (String string : names) { System.out.print(string + " "); } } public static void main(String[] args) { Custmoer s=new Custmoer(); String[] names={"Tom","Jack","Mery","Smith","Sunny"}; // 客户名字 s.show(names); } }
第二种方法
创建CustomerBiz类的过程:
package cn.jbit.test3; import java.util.*; import java.util.Arrays; /* * 实现客户信息的管理 * */ public class CustomerBiz { // 字符串数组作为参数和返回值 public String[] sortNames(String[] names) { Arrays.sort(names); return names; } }
测试类:
package cn.jbit.test3; public class TestSort { public static void main(String[] args) { CustomerBiz st = new CustomerBiz(); String[] namesbysort = new String[] { "Tom", "Jack", "Merry", "Smith","Sunny" }; System.out.println("****排序前****"); for (int i = 0; i < namesbysort.length; i++) { if (namesbysort[i] != null) { System.out.print(namesbysort[i] + "\t"); } } //调用排序方法 st.sortNames(namesbysort); System.out.println("\n****排序后****"); for (int i = 0; i < namesbysort.length; i++) { if (namesbysort[i] != null) { System.out.print(namesbysort[i] + "\t"); } } } }
上机练习4
练习——实现客户信息的添加和显示
需求说明
改进上机练习 1, 实现添加客户信息,客户信息包括姓名、年龄、是否有会员卡。
程序运行结果如图 14.6 所示。
图 14.6 上机练习 4 的运行结果
提示:
定义 Customer 类,包含的属性有姓名、年龄、是否是会员;包含的方法有输出基本信息。
在 CustomerBiz 类中声明客户对象数组,Customer [ ] Customers = new Customer [30];。
在 CustomerBiz 类中创建方法 addCustomer(Customer cust),实现客户对象的添加。
在 CustomerBiz 类中创建方法 showCustomers(),输出客户对象信息。
在 TestCustomer 类中创建客户对象,实现添加客户信息和输出客户信息。
参考代码:
客户类:
package cn.jbit.test5; /* * * 客户类 * */ class Customer { public String name; public int age; public boolean isMember; public void showInfo() { System.out.println(name + "\t" + age + "\t" + isMember); } }
实现管理客户信息:
package cn.jbit.test5; /* * * 实现客户信息的管理 * */ class CustomersBiz { Customer[] customers = new Customer[30]; // 客户数组 /* * 增加客户 * * @param 一个客户 */ public void addCustomer(Customer cust) { for (int i = 0; i < customers.length; i++) { if (customers[i] == null) { customers[i] = cust; break; } } } /* * 显示客户信息 * */ public void showCustomers() { System.out.println("客户信息:"); for (int i = 0; i < customers.length; i++) { if (customers[i] != null) { customers[i].showInfo(); } } System.out.println(); } }
调用有参方法:
package cn.jbit.test5; import java.util.Scanner; public class TestAdd { /* * 调用有参方法 */ public static void main(String[] args) { // 实例化客户对象 Customer customer1 = new Customer(); customer1.name = "王一"; customer1.age = 30; customer1.isMember = false; Customer customer2 = new Customer(); customer2.name = "郝强"; customer2.age = 19; customer2.isMember = true; // 新增客户对象 CustomersBiz customersBiz = new CustomersBiz(); customersBiz.addCustomer(customer1); customersBiz.addCustomer(customer2); customersBiz.showCustomers();// 显示客户信息 } }