为Person类增加以下方法: (1)int getAge(int year) //返回在year年的年龄 (2)int getAge() //返回今年的年龄,重载 (3)int olderThen(Person per) //返回this与per //的年龄差值,按年龄比较对象大小 (4)boolean equals(Person per) //比较this与 // per引用实例对应成员变量值是否相等 2. 实现银行账户类构造方法成成员方法。 public class Account //账户类 { private String name; //储户姓名 private double balance; //账户余额 public Account(String name) //构造方法 public String getName() //返回账户名 public double balance() //查看账户余额 public boolean put(double value)//存款,存入金额 public double get(double value) //取款,参数为取款金额,返回实际取到金额 }并实现Comparble<T>接口,提供按照账户余额比较账户大小的方法;同时,使用Comparator<T>接口声明比较器类CompareName,按照账户名比较账户大小;编写main方法测试相应的接口实现方法。
时间: 2024-02-14 16:12:30 浏览: 82
1. Person类增加方法:
```
public class Person implements Comparable<Person> {
private String name;
private int birthYear;
// 构造方法
public Person(String name, int birthYear) {
this.name = name;
this.birthYear = birthYear;
}
// 返回今年的年龄
public int getAge() {
return getAge(Calendar.getInstance().get(Calendar.YEAR));
}
// 返回在year年的年龄
public int getAge(int year) {
return year - birthYear;
}
// 返回年龄差值,按年龄比较对象大小
public int olderThen(Person per) {
return this.birthYear - per.birthYear;
}
// 比较this与per引用实例对应成员变量值是否相等
public boolean equals(Person per) {
return this.name.equals(per.name) && this.birthYear == per.birthYear;
}
// 实现Comparable接口,按年龄比较对象大小
@Override
public int compareTo(Person per) {
return this.birthYear - per.birthYear;
}
}
```
2. Account类实现:
```
public class Account implements Comparable<Account> {
private String name;
private double balance;
// 构造方法
public Account(String name) {
this.name = name;
this.balance = 0.0;
}
// 返回账户名
public String getName() {
return name;
}
// 查看账户余额
public double getBalance() {
return balance;
}
// 存款,存入金额
public boolean put(double value) {
if (value < 0) {
System.out.println("存入金额不能为负数!");
return false;
}
balance += value;
return true;
}
// 取款,参数为取款金额,返回实际取到金额
public double get(double value) {
if (value < 0) {
System.out.println("取款金额不能为负数!");
return 0.0;
}
if (value > balance) {
System.out.println("余额不足!");
return balance;
}
balance -= value;
return value;
}
// 实现Comparable接口,按账户余额比较对象大小
@Override
public int compareTo(Account acc) {
return Double.compare(this.balance, acc.balance);
}
// Comparator接口实现,按账户名比较对象大小
public static class CompareName implements Comparator<Account> {
@Override
public int compare(Account acc1, Account acc2) {
return acc1.name.compareTo(acc2.name);
}
}
}
```
3. 测试代码:
```
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Test {
public static void main(String[] args) {
// 创建Person对象列表
List<Person> personList = new ArrayList<>();
personList.add(new Person("张三", 1990));
personList.add(new Person("李四", 1980));
personList.add(new Person("王五", 2000));
// 按年龄排序
Collections.sort(personList);
System.out.println(personList); // 按年龄从小到大输出
// 创建Account对象列表
List<Account> accountList = new ArrayList<>();
accountList.add(new Account("张三"));
accountList.add(new Account("李四"));
accountList.add(new Account("王五"));
// 按余额排序
Collections.sort(accountList);
System.out.println(accountList); // 按余额从小到大输出
// 按账户名排序
Collections.sort(accountList, new Account.CompareName());
System.out.println(accountList); // 按账户名从小到大输出
}
}
```
阅读全文