我一直在这里工作了几个小时,我觉得(我希望)我很快就能搞清楚了。这个程序从一个外部文件读入一堆值,并将它们放入一个对象数组中,这似乎工作得很好。排序对象数组时,利用Comparable对2个排序条件进行排序
的对象属性是:
银行帐号 客户名称 银行账户余额
我可以输出他们的帐号顺序(那怎么他们从文件中读取的,不排序是必要的)
2.我设置的方法,由实施可比的银行账户余额进行排序和它的正常工作。
3.我需要第二个排序方法,按客户名称排序。 - 我遇到的问题是基于我所做的研究和我尝试过的,我得出的结论是,使这项工作的唯一方法是构建我自己的可比较对象(对不起如果我的术语是倾斜的。)我已经多次尝试这个,同时对Java文档和SE上的一些类似问题也进行了多次尝试。
当所有事情都说完之后,我会将一些听众放入我的复选框组中,以允许用户切换不同的排序方法。
这里是我工作的大块:
public class bankAccounts implements Comparable<bankAccounts> {
/* PRIVATE FIELDS HERE, FOLLOWED BY TYPICAL GET AND SET METHODS */
/*SORTS BY ACCOUNT BALANCE WORKING GREAT*/
public int compareTo(bankAccounts b) {
if (accountBalance < b.accountBalance)
{
return -1;
}
if (accountBalance > b.accountBalance) {
return 1;
}
return 0;
}
/* BEGIN SNIPPET OF MAIN CLASS */
/*METHOD I CALL FROM MAIN CLASS, SORTS BY BALANCE ^^ AS SEEN ABOVE */
Arrays.sort(retrievedAccounts);
for (int i=0; i<retrievedAccounts.length; i++) {
String resultFull = Integer.toString(retrievedAccounts[i].getAccountNumber()) + retrievedAccounts[i].getAccountLastName() + Double.toString(retrievedAccounts[i].getAccountBalance());
box.append(resultFull + "\n");
}
/* NORMAL METHOD WHICH OUTPUTS IN ORDER OF ACCOUNT NUMBER, NO SORTING HAPPENING HERE */
for(int x = 0; x < retrievedAccounts.length; ++x)
{
String resultFull=Integer.toString(retrievedAccounts[x].getAccountNumber()) + retrievedAccounts[x].getAccountLastName() + Double.toString(retrievedAccounts[x].getAccountBalance());
box.append("\n\n\n" + resultFull + "\n\n");
}
我希望有人会迈向下一步可能允许我完成这件事的一些见解。如果你有建议采取这个完全不同的方向,我也接受。
好吧,现在它更接近....它是尊重compareType变量(真棒!)仍然没有排序名称权..我想我有我的.compareTo()方法有问题吗? '公众诠释的compareTo(bankAccounts B)\t { \t \t如果(this.compareType == 0){ \t \t如果(accountBalance b.accountBalance)\t { \t \t \t返回1; \t \t} \t \t return 0; \t \t}否则{ \t \t \t如果(accountLastName.compareTo(b.accountLastName)> 0) \t \t \t { \t \t \t \t返回-1; \t \t \t} \t \t \t \t \t \t如果(accountLastName.compareTo(b.accountLastName)<0) \t \t \t { \t \t \t \t返回1; \t \t \t} \t \t \t return 0; \t \t} \t}' –
当您按名称测试时,必须将compareType等于1.您是否尝试过? – Suranga
是的。我将1传递给我构建的getCompareType()方法,并且我知道它正在工作,因为它正在绕过Balance的排序。另外,当我将0传递给getCompareType()方法时,它会进行平衡排序。我认为可能有问题,我的'(accountLastName.compareTo(b.accountLastName)> 0){返回-1; '陈述。我现在正在做一些研究,看看如果我能弄明白。 –