2011-05-02 42 views
0

我有一個程序計算從txt文件中獲取的單詞的頻率,並將它們存儲在ArrayList中。我對使用選擇排序非常不熟悉,但它是我被要求使用的排序類型。我已經看過多種選擇,但是我的排在某處。在字符串的ArrayList上使用選擇排序

這是我的實際排序。

private void sort() { 

    for (int i = 0; i < wordArray.size() - 1; i++) { 
     for (int j = i + 1; j < wordArray.size(); j++) { 
      if (wordArray.get(i).compareTo(wordArray.get(j)) == 1) { 

       Word temp = wordArray.get(i); 
       wordArray.set(i, wordArray.get(j)); 
       wordArray.set(j, temp); 
      } 
     } 
    } 
} 

這是我比較的字符串(我很確定邏輯錯誤在這裏)。

public int compareTo(Word w) { 

    for (int i = 0; i < this.word.length() - 1; i++) { 
     if (i <= w.word.length() - 1) { 
      if (this.word.charAt(i) < w.word.charAt(i)) { 
       return -1; 
      } else if (this.word.charAt(i) > w.word.charAt(i)){ 
       return 1; 
      } 
     } 
    } 
    return -1; 
} 

Word是一個具有字符串變量「word」的類。任何提示將不勝感激:)

+0

這有什麼問題呢?即什麼是不正確的行爲?你有沒有嘗試在調試器中逐句通過你的代碼? – 2011-05-02 00:44:59

+0

上面,增加,一個,先進的,以前,所有,因爲,總而言之,和,任何,是,是。這是它現在如何發展的一個例子。該文件中有大約138個獨特的單詞。 – Alex 2011-05-02 00:48:44

+0

我不認爲你想要自己實施。我也相信Word.compareTo可以簡單地委託給Word的String.compareTo。 – ditkin 2011-05-02 00:49:35

回答

2

爲什麼不直接使用此

public int compareTo(Word w) { 
    return this.word.compareTo(w.word); 
} 
+0

實際上,在更改compareTo和我的排序if(wordArray.get(i).compareTo(wordArray.get(j))> = 1)之後它工作:)謝謝! – Alex 2011-05-02 01:02:52