1

我想显示 中的所有元素ArrayList,除了元素 10(这是单词“will”)。我该怎么做呢?当我运行下面的代码时,它什么也没显示。

 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));
 }
4

6 回答 6

4

您可以像这样删除列表的第 10 个元素:

someList.remove(10);

您可以像这样连接列表的每个元素:

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

// test it
System.out.println(text.toString());
于 2012-06-12T02:45:13.123 回答
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());

希望这可以帮助!

于 2012-06-12T02:45:28.383 回答
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);
于 2012-06-12T02:45:54.463 回答
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());
}
于 2012-06-12T02:46:38.160 回答
1

调用practice1.get(0+1+2+3+4+5+6+7+8+9+11+12+13)在实践中为您提供索引 81 处的对象,该对象等于参数值的总和,引发 ArrayIndexOutOfBoundsException。

相反,您应该遍历这些值并将它们添加到 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));
于 2012-06-12T02:46:51.463 回答
0

尝试使用这个:

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

...而不是这个:

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

虽然最好使用循环。

于 2012-06-12T02:45:24.110 回答