【发布时间】:2014-05-07 06:10:47
【问题描述】:
我正在尝试编写一个方法,该方法将字符串的 ArrayList 作为参数,并在每个长度为 4 的字符串前面放置一个由四个星号组成的字符串。
但是,在我的代码中,我在构建方法时遇到了错误。
这是我的标记长度类
import java.util.ArrayList;
public class Marklength {
void marklength4(ArrayList <String> themarklength){
for(String n : themarklength){
if(n.length() ==4){
themarklength.add("****");
}
}
System.out.println(themarklength);
}
}
以下是我的主要课程:
import java.util.ArrayList;
public class MarklengthTestDrive {
public static void main(String[] args){
ArrayList <String> words = new ArrayList<String>();
words.add("Kane");
words.add("Cane");
words.add("Fame");
words.add("Dame");
words.add("Lame");
words.add("Same");
Marklength ish = new Marklength();
ish.marklength4(words);
}
}
基本上在这种情况下,它应该运行,因此它添加了一个带有 "****" 字符串的数组列表,放在数组列表的每个前一个元素之前,因为字符串的长度都是 4。
顺便说一句
这包括添加另一个元素
我不确定我哪里出错了。可能在我的 for 循环中?
我收到以下错误:
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at java.util.AbstractList$Itr.next(AbstractList.java:343)
at Marklength.marklength4(Marklength.java:7)
at MarklengthTestDrive.main(MarklengthTestDrive.java:18)
非常感谢。帮助表示赞赏。
【问题讨论】:
-
请同时发布您的错误。
-
阅读
List#add的javadoc。然后寻找它的重载方法。 -
您正在尝试修改仅为该 foreach 循环创建的临时变量:stackoverflow.com/questions/85190/…, docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html
-
在使用 for ( : ) 迭代列表时,您不能更改列表。尝试使用 for (int i = 0; i
-
您想在长度为 4 的字符串前面附加四个星号,还是想在字符串前面的列表中添加另一个元素?所以,如果你有
["item"],你希望它看起来像["****item"],还是["****", "item"]?