2012-06-12 84 views
1

我想顯示ArrayList中的所有元素,但元素10(它是「will」一詞)除外。我該怎麼做呢?當我運行下面的代碼時,它什麼都沒顯示。如何顯示ArrayList中除一個元素以外的所有元素?

private void practiceButtonActionPerformed(java.awt.event.ActionEvent evt) { 
    ArrayList <String> practice1 = new ArrayList(); 
    Collections.addAll(practice1, "If", "she", "boarded", "the", "flight" 
         , "yesterday", "at", "10:00,", "she", "will", "be" 
         , "here", "anytime", "now."); 
    contentTextPane.setText(practice1.get(0+1+2+3+4+5+6+7+8+9+11+12+13)); 
} 
+3

您的聲明等同於'practice1.get(81)'。 – Jeffrey

回答

3

practice1.get(0+1+2+3+4+5+6+7+8+9+11+12+13) 

沒有做什麼,你認爲它。這將計算0 + 1 + 2 + ... + 13的值,然後在ArrayList中查找該條目。由於你的ArrayList沒有這麼多元素,它會拋出IndexOutOfRange異常。

如果你想顯示除了第十要素的一切,儘量使用循環:

StringBuilder builder = new StringBuilder(); 
for (int i = 0; i < practice1.size(); i++) { 
    if (i != 10) { 
     builder += practice1.get(i); 
    } 
} 
contextTextPane.setText(builder.toString()); 

希望這有助於!

+0

非常具有描述性! – Mazyr

4

您可以刪除列表中的第10個元素是這樣的:

someList.remove(10); 

您可以連接列表中的每個元素是這樣的:

StringBuilder text = new StringBuilder(); 
for (String thisString : someList) { 
    text.append(thisString).append(" "); 
} 

// test it 
System.out.println(text.toString()); 
0

嘗試使用這樣的:

practice1.get(0) + practice1.get(1) + ... 

...而不是s:

contentTextPane.setText(practice1.get(0+1+2+3+4+5+6+7+8+9+11+12+13)); 

雖然如果你使用循環會更好。

3

這說明不了什麼,因爲你正在使用的語法檢索從列表中的元素不存在

0+1+2+3+4+5+6+7+8+9+11+12+13 

只是評估爲所有號碼的總和,然後用得到的元素,其將超越界限。

你需要做的是一樣的東西

String r = ""; 
for (int i = 0; i < practice.size(); ++i) 
    if (i != 10) 
    r += practice.get(i); 

contentTextPane.setText(r); 
2
private void practiceButtonActionPerformed(java.awt.event.ActionEvent evt) { 
    ArrayList <String> practice1 = new ArrayList(); 

    Collections.addAll(practice1, "If", "she", "boarded", "the", "flight", "yesterday", "at", 
"10:00,", "she", "will", "be", "here", "anytime", "now."); 

    StringBuilder sb = new StringBuilder(); 
    for (int i = 0; i < practice1.size(); i++) { 
     if (i == 10) { 
      continue; 
     } 
     sb.append(practice1.get(i)); 
     if (i != practice1.size()-1) { 
      sb.append(' '); 
     } 
    } 

    contentTextPane.setText(sb.toString()); 
} 
1

調用practice1.get(0+1+2+3+4+5+6+7+8+9+11+12+13)讓你在指數81,這是等於參數值的總和,拋出一個ArrayIndexOutOfBoundsException在practice1的對象。

相反,您應該遍歷這些值並將它們添加到StringBuilder。

StringBuilder sb = new StringBuilder(); 
for (int i = 0; i < practice1.size(); i++) { 
    if (i != 10) { 
     sb.append(practice1.get(i)); 
     sb.append(" "); 
    } 
} 
contentTextPane.setText(sb.substring(0, sb.length() - 1)); 
+0

+1使用StringBuilder(更快) - 您也可以使用* foreach *:for(String string:practice1){.. –

+0

雖然使用foreach過濾出第十個對象是不太正確的。 – Vulcan

相關問題