2013-02-25 34 views
2

實現我工作的以下問題:寫作中的removeAll在Java中

寫方法的removeAll是將一個整數值作爲參數,並且從列表中移除給定值的所有事件。

我的代碼不檢查數組中的所有元素。它工作正常當我將for循環中的「大小」更改爲數組中的整數數量時。它檢查所有這些。

public class ArrayIntList { 
    private int[] elementData; 
    private int size; 
} 


public void remove(int index) { 

    for(int i = index; i < size-1; i++) { 
     elementData[i] = elementData[i+1]; 
    } 
    size--; 
} 

public void removeAll(int num) { 

    for (int j = 0; j < size; j++) {// this loop doesn't check all the elements 

     if (elementData[j] == num) { 
      remove(j); 
     } 

    } 

} 
+0

提示:向後運行循環 – 2013-02-25 02:29:20

回答

1

如果要刪除的元素,你需要遞減j否則你跳過元素。

remove(j); 
j--; 

另外,如果你從末開始迭代,你不必改變計數器,因爲你已經處理過的那些元素。

for (int j = size - 1; j >= 0; j--) { 
    if (elementData[j] == num) { 
      remove(j); 
    } 
} 
+0

太棒了!謝謝你的幫助。 – 2013-02-25 02:30:10