实现银行账户类构造方法成成员方法。 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 22:12:26 浏览: 121
个人银行账户管理_c/C++_个人银行账户管理_show_
5星 · 资源好评率100%
好的,我可以帮你解答这个问题。
首先,我们需要将构造方法转换为成员方法。成员方法需要与类名相同,没有返回类型(也不是void),并且要在方法中使用this关键字来代表当前对象。转换后的代码如下:
```java
public class Account {
private String name; //储户姓名
private double balance; //账户余额
//成员方法,用于创建Account对象
public Account(String name) {
this.name = name;
this.balance = 0.0; //新建账户余额为0
}
public String getName() {
return this.name;
}
public double getBalance() {
return this.balance;
}
public boolean put(double value) {
if (value > 0) {
this.balance += value;
return true;
} else {
return false;
}
}
public double get(double value) {
if (value > 0 && value <= this.balance) {
this.balance -= value;
return value;
} else {
return 0.0;
}
}
}
```
接着,我们可以实现Comparable<T>接口,提供按照账户余额比较账户大小的方法。这里的T代表泛型,我们可以将它指定为Account,表示我们要比较的对象是Account类型。实现Comparable<Account>接口需要实现compareTo方法,该方法返回一个int值,表示当前对象与另一个对象的大小关系。如果当前对象小于另一个对象,则返回负数;如果当前对象等于另一个对象,则返回0;如果当前对象大于另一个对象,则返回正数。按照账户余额比较大小的代码如下:
```java
public class Account implements Comparable<Account> {
//...
@Override
public int compareTo(Account other) {
if (this.balance < other.balance) {
return -1;
} else if (this.balance == other.balance) {
return 0;
} else {
return 1;
}
}
}
```
最后,我们需要使用Comparator<T>接口声明比较器类CompareName,按照账户名比较账户大小。Comparator<T>接口是一个函数式接口,我们可以使用Lambda表达式来实现它。比较器类需要实现compare方法,该方法接受两个参数,分别表示要比较的两个对象,返回一个int值,表示它们的大小关系。按照账户名比较大小的代码如下:
```java
import java.util.Comparator;
public class CompareName implements Comparator<Account> {
@Override
public int compare(Account a1, Account a2) {
return a1.getName().compareTo(a2.getName());
}
}
```
最后,我们可以编写main方法测试相应的接口实现方法。测试代码如下:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Account> accounts = new ArrayList<>();
accounts.add(new Account("Alice"));
accounts.add(new Account("Bob"));
accounts.add(new Account("Charlie"));
//按照账户余额排序
Collections.sort(accounts);
for (Account account : accounts) {
System.out.println(account.getName() + " " + account.getBalance());
}
//按照账户名排序
CompareName compareName = new CompareName();
Collections.sort(accounts, compareName);
for (Account account : accounts) {
System.out.println(account.getName() + " " + account.getBalance());
}
}
}
```
输出结果如下:
```
Alice 0.0
Bob 0.0
Charlie 0.0
Alice 0.0
Bob 0.0
Charlie 0.0
```
由于我们没有进行存款或取款操作,所以账户余额都是0。按照账户余额排序和按照账户名排序都没有区别,因为所有账户的余额都相同。
阅读全文