我一直在這裏工作了幾個小時,我覺得(我希望)我很快就能搞清楚了。這個程序從一個外部文件讀入一堆值,並將它們放入一個對象數組中,這似乎工作得很好。排序對象數組時,利用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; '陳述。我現在正在做一些研究,看看如果我能弄明白。 –