2017-10-05 55 views
0

我正在學習Java,無法找出我的問題。當!= 2時從列表中刪除

我有一個大小不一的列表。我想要做的是,是從列表中刪除,直到大小= 2

我擁有的是:

int content = list.size() - 1; 

while(list.size() !=2){ 
list.remove(content); 
} 

但我得到異常:IndexOutOfBoundsException異常。指數9,大小9

(此索引,大小將根據內容有時會改變)

我怎麼能保持在列表進行迭代,直到只有2個元素任何建議都走了?

感謝

+4

您需要減少'content',否則其值不會改變。 – jsheeran

回答

4

真的需要

while (list.size() > 2){ 
    list.remove(content--); 
} 
  1. > 2意味着該算法是穩定的,如果大小最初是小於2

  2. 你需要減少content當您刪除一個元素。

1

你永遠不遞減的內容,所以它永遠不會成爲2.

int content = list.size() - 1; 

while(list.size() !=2){ 
    list.remove(content); 
    content = content -1; 
} 
1

你可以使用下面的實現。

while(list.size() !=2){ 
    list.remove(list.size() - 1); 
} 

但是,如果列表包含一個或零個元素,則這不起作用;這些案例可以覆蓋如下。

while(list.size() > 2){ 
    list.remove(list.size() - 1); 
}