2012-10-17 71 views
0

我想implement Comparable爲我的班級之一。基於先前比較變量的值進行比較?

我試陣:A1, A2, A3, B1, B2, B3

我想這樣的排序是這樣的: -sorting通過信函

- 如果一則升數

- 如果B,則降數

預期結果:A1, A2, A3, B3, B2, B1

下面的代碼總是會給我一封信和數字升序,如A1, A2, A3, B1, B2, B3. 如何根據Foo的字母切換數字的順序?

class Foo implements Comparable { 
    String letter, int number; 

    int compareTo(Foo f) { 
     int x = letter.compareTo(f.letter); 
     return x != 0 ? x : number.compareTo(f.number); 
    } 
} 
+0

什麼時候這封信是C? –

+0

那是因爲你還沒有在compareTo方法中測試字母「A」或「B」。 –

回答

2

你可以做這樣的事情:

int compareTo(Foo f) { 
    int x = letter.compareTo(f.letter); 
    return x != 0 ? x 
     : letter.equals("A") ? number.compareTo(f.number) 
           : f.number.compareTo(number); 
} 

(這是假設你要正確對待所有非A值下降,當然...)

+0

現在確定,因爲我只有A + B這個作品真的很好! – membersound