调用该方法的类代码如下。
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();// 显示客户信息
}
}