

代码的编写,作为考试复习资料,希望大家帮帮忙 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111


来自NewBing和LP的编写:
以下是Person类的Java代码实现:
public class Person {
private String name;
private int age;
public Person() {
this.name = "";
this.age = 0;
}
/**
* 获取人名
*
* @return 人名
*/
public String getName() {
return name;
}
/**
* 设置人名
*
* @param name 人名
* @throws IllegalArgumentException 如果人名为空字符串
*/
public void setName(String name) {
if (name.isEmpty()) {
throw new IllegalArgumentException("人名不能为空!");
}
this.name = name;
}
/**
* 获取年龄
*
* @return 年龄
*/
public int getAge() {
return age;
}
/**
* 设置年龄
*
* @param age 年龄
* @throws IllegalArgumentException 如果年龄小于0或大于200
*/
public void setAge(int age) {
if (age < 0 || age > 200) {
throw new IllegalArgumentException("年龄必须在0到200之间!");
}
this.age = age;
}
/**
* 判断当前Person对象和传入的Person对象的人名是否相同
*
* @param person 要比较的Person对象
* @return 如果人名相同,返回true;否则返回false
*/
public boolean hasSameName(Person person) {
return this.name.equals(person.getName());
}
/**
* 判断当前Person对象和传入的Person对象的年龄是否相同
*
* @param person 要比较的Person对象
* @return 如果年龄相同,返回true;否则返回false
*/
public boolean hasSameAge(Person person) {
return this.age == person.getAge();
}
/**
* 判断当前Person对象的年龄是否大于传入的Person对象的年龄
*
* @param person 要比较的Person对象
* @return 如果当前Person对象的年龄大于传入的Person对象的年龄,返回true;否则返回false
*/
public boolean isOlderThan(Person person) {
return this.age > person.getAge();
}
/**
* 按指定格式显示人名和年龄
*/
public void writeOutput() {
System.out.println("人名:" + name + " 年龄:" + age);
}
}
下面是Person数据库类的Java代码实现:
public class PersonDatabase {
private Person[] data;
/**
* 初始化Person数据库
*/
public void initData() {
data = new Person[6];
data[0] = new Person();
data[0].setName("小黑");
data[0].setAge(19);
data[1] = new Person();
data[1].setName("马克");
data[1].setAge(20);
data[2] = new Person();
data[2].setName("丽丽");
data[2].setAge(21);
data[3] = new Person();
data[3].setName("美美");
data[3].setAge(19);
data[4] = new Person();
data[4].setName("小明");
data[4].setAge(18);
data[5] = new Person();
data[5].setName("你的名字");
data[5].setAge(20);
}
/**
* 显示数据库里的数据
*/
public void writeOutput() {
if (data == null || data.length == 0) {
System.out.println("数据库为空");
return;
}
for (int i = 0; i < data.length; i++) {
System.out.println((i + 1) + ":人名:" + data[i].getName() + " 年龄:" + data[i].getAge());
}
}
/**
* 根据人名查找Person对象并返回其年龄
*
* @param name 要查找的人名
* @return 找到的Person对象的年龄,如果找不到则返回-1
*/
public int findAgeByName(String name) {
if (data == null) {
return -1;
}
for (Person person : data) {
if (person.getName().equals(name)) {
return person.getAge();
}
}
return -1;
}
/**
* 对数据库中的数据按年龄从小到大进行冒泡排序
*/
public void bubbleSort() {
if (data == null || data.length == 0) {
return;
}
for (int i = 0; i < data.length - 1; i++) {
for (int j = 0; j < data.length - 1 - i; j++) {
if (data[j].getAge() > data[j + 1].getAge()) {
// 交换两个元素的位置
Person temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
}
}
}
}
}
在PersonTest类的main方法中,你可以测试Person和PersonDatabase类的每个公开方法。例如:
public class PersonTest {
public static void main(String[] args) {
// 测试Person类
Person person1 = new Person();
person1.setName("John");
person1.setAge(30);
Person person2 = new Person();
person2.setName("Jane");
person2.setAge(25);
System.out.println("Person 1与Person 2的人名是否相同:" + person1.hasSameName(person2));
System.out.println("Person 1与Person 2的年龄是否相同:" + person1.hasSameAge(person2));
System.out.println("Person 1的年龄是否大于Person 2的年龄:" + person1.isOlderThan(person2));
person1.writeOutput();
// 测试PersonDatabase类
PersonDatabase database = new PersonDatabase();
database.initData();
database.writeOutput();
int age = database.findAgeByName("小黑");
System.out.println("找到的年龄:" + age);
database.bubbleSort();
database.writeOutput();
}
}