2 回答

TA貢獻1921條經驗 獲得超9個贊
有一點你應該注意。操作數組時,您應該提及到達最后一個元素時要做什么。在 CS 中,數組計數從 0 開始。在長度為 4 的數組中,最后一個元素的索引為 3 而不是 4。
問題是如果在沒有邊界檢查的情況下進行增量,則您沒有檢查最后兩個情況。這意味著當您返回第一個 if 語句時,有可能出現異常。
另一個問題是 for 循環永遠不會結束。
這是消除異常的快速解決方案。您必須注意到程序不會停止。您應該指定一些條件以退出 for 循環。
注意:你最終會得到一個只有愛這個詞的巨大數組。
public static ArrayList<String> fix(ArrayList<String> list) {
// write your code here
//loop through array
for (int i = 0; i < list.size();){
//if contains r and not l -remove it
if(list.get(i).contains("r") && !list.get(i).contains("l")){
System.out.println(list.toString());
list.remove(i);
System.out.println(list.toString());
if(i > 0) {i--;}
}
//if contains l and not r - dub entry
if(!list.get(i).contains("r") && list.get(i).contains("l")){
System.out.println(list.toString());
list.add(i, list.get(i));
System.out.println(list.toString());
if(i == list.size()-1) {break;}else {i+=2;}
}
//contains none - do nothing
if(!list.get(i).contains("r") && !list.get(i).contains("l")){
}
//contains both - do nothing
if(list.get(i).contains("r") && list.get(i).contains("l")){
}
}
return list;
}

TA貢獻1863條經驗 獲得超2個贊
由于您要從列表中刪除元素,因此列表的大小會遞減,并且您正在運行循環直到列表的大?。▽嶋H上已經改變),這就是 OutOfIndexException 的原因:)
添加回答
舉報