【发布时间】:2024-01-22 05:34:01
【问题描述】:
我正在尝试创建一个输入字符串并返回拼写错误的方法(通过删除一些随机字符)。出于某种原因,我的迭代器在 id.remove() 的行上给了我一个空错误。有什么想法吗?
public static String getMissSpelledWord(String str) {
Random random = new Random();
char[] character = str.toCharArray();
String misspelled = new String();
ArrayList<Character> chars = new ArrayList<Character>();
for (int i = 0; i < character.length; i++) {
chars.add(character[i]);
}
for (Iterator < Character > id = chars.iterator(); id.hasNext();) {
int remove = random.nextInt(3);
if(remove == 0) {
id.remove();
}
}
for(char c : chars) {
misspelled += c;
}
return misspelled;
}
【问题讨论】:
-
您需要在
for循环内调用id.next()。否则,第一次调用remove将不会指向任何内容。 -
顺便说一句,您的整整一代
chars可以简单地替换为new ArrayList(Arrays.asList(str))