2014-12-05 39 views
0

我需要打印一個包含重複單詞的數組。我已經有我的陣列工作,但我無法弄清楚如何正確地計算單詞。我已經知道,當我的指數計數器(i)在49時,以及(i)計數到50時,我收到錯誤信息,但我不知道其他方法來調整我的方法。你能幫我麼?任何幫助將不勝感激!數組在計數時出界[正確]

這是我的數組:

藍藍藍藍藍藍藍藍藍藍藍藍藍棕綠 專線專線專線專線檸檬檸檬檸檬檸檬檸檬檸檬丁香丁香 橙橘紅色的赤紅色赤紅色的赤紅色的赤紅色紅色白色白色白色 白色白色黃黃

更正後的代碼

public static void printWordCount(String[] z) 
{ 
    System.out.println("THERE ARE " + wordTotal + " WORDS IN THE FILE"); 
    System.out.println("WORD W/ COUNT:"); 

    int i = 0; 
    int count = 0; 

    while(i < z.length - 1) { 
     if (z[i].equalsIgnoreCase(z[i+1])) { 
      i++; 
      count++; 
     } 
     else if (!z[i].equalsIgnoreCase(z[i+1]) || i == z.length - 1) { 
      count++; 
      System.out.println(z[i] + "/" + count); 
      i++; 
      count = 0; 
     } 
    } 
    count++; 
    System.out.println(z[i] + "/" + count); 
} 

這是我的輸出:

有50個詞語的FILE

WORD W/COUNT:

藍/ 13

棕色/ 1

綠色/ 8

檸檬/ 6

丁香/ 2

橙/ 2

紅色/ 10

白/ 5

黃色/ 3

回答

3

你的條件允許i達到z.length - 1。 然後z[i].equalsIgnoreCase(z[i+1])i+1 == z.length開始將您帶出數組邊界。

如果您希望將i個要素比作i+1個元素,條件更改爲:

while(i < z.length - 1) 

那麼你或許應該後循環加

 count++; 
     System.out.println(z[i] + "/" + count); 

到打印最終單詞的出現次數。

+0

總是在我的這些答案前面:) – 2014-12-05 21:02:14

+0

謝謝你的幫助!但是,我改變了它,但它仍然沒有打印最後一組單詞。我會用最新的代碼更新我的問題。 – Braulio 2014-12-05 21:04:56

+0

@Braulio看我的編輯。沒有測試過,但是它應該可以工作。 – Eran 2014-12-05 21:10:26