我有一个实施BankAccount超类的银行帐户程序,该程序扩展到CheckingAccount和SavingsAccount子类。
每个帐户都有四个属性:名字,姓氏,社会保障和余额。
我有一个BankDatabase类,它创建一个新的ArrayList来容纳每个对象。
我想使用Comparable接口和compareTo()方法对此ArrayList进行排序。
public interface Comparable<BankAccount>
{
int compareTo(BankAccount other);
}
我已经为我的超类实现了Comparable:
public abstract class BankAccount implements Comparable<BankAccount>
我写了下面的compareTo()方法:
@Override
public int compareTo(BankAccount other)
{
if (this.getBalance() < other.getBalance())
{
return -1;
}
if (this.getBalance() > other.getBalance())
{
return 1;
}
return 0;
}
我在BankAccount超类中创建了一个平衡吸气剂。 我试过使用just而不是this.getBalance()。 然后在我的BankDatabase类中,我尝试创建一个名为print()的void方法,该方法将按平衡对BankAccount对象进行排序并打印它们。
这是我没有遇到麻烦的地方。以下代码就是我现在所拥有的:
void print()
{
Collections.sort(database);
for (BankAccount database1 : database)
{
System.out.println(database1);
}
}
对于此代码,我需要使用 Comparable 和 compareTo(),因为它是作业的一部分。
我导入了java.util.ArrayList,java.util.Collections和java.util.List。
下面是我的BankDatabase类以及创建新的支票或储蓄帐户的两种方法:
public class BankDatabase
{
String first;
String last;
List <BankAccount> database;
BankDatabase()
{
database = new ArrayList <BankAccount>();
}
void createCheckingAccount(String customerName, String ssn, float deposit)
{
String[] customerNames = customerName.split(" ");
first = customerNames[0];
last = customerNames[1];
database.add(new CheckingAccount(first, last, ssn, deposit));
}
void createSavingsAccount(String customerName, String ssn, float deposit)
{
String[] customerNames = customerName.split(" ");
first = customerNames[0];
last = customerNames[1];
database.add(new SavingsAccount(first, last, ssn, deposit));
}
非常感谢任何帮助。我一直在寻找其他线程,使用Collections看起来非常简单,但它仍然失败。
我得到的一个错误是:线程中的异常“main”java.lang.RuntimeException:无法编译的源代码 - 错误的sym类型:java.util.Collections.sort
谢谢!