【发布时间】:2016-02-15 11:05:57
【问题描述】:
错误:java.lang.IndexOutOfBoundsException:索引 70 无效,大小为 10;
我创建了一个函数来创建随机 Integer ArrayList,并对其进行一些操作,现在我正在尝试将其调整为 Chars,但出现了奇怪的错误,在我看来,默认的 chars 数组大小更大然后是整数,但我不确定。我能用这段代码做什么?
函数在这里失败:numbers.set(rightNumbers.get(k),answer.charAt(k));
@Override
public void charactersRandomise(String answer) {
final String alphabet = "ABSDEFGHMN";
final int N = alphabet.length();
ArrayList<Character> numbers = new ArrayList<Character>();
ArrayList<Character> rightNumbers = new ArrayList<Character>();
Random randomGenerator = new Random();
int i=0;
Log.d("size",String.valueOf(N));
while (numbers.size() < 10) {
char random = alphabet.charAt(randomGenerator.nextInt(N));
if (!numbers.contains(random)) {
numbers.add(random);
Log.d("numbers", numbers.get(i).toString());
i++;
}
}
int j=0;
while (rightNumbers.size() < answer.length()) {
char random = alphabet.charAt(randomGenerator.nextInt(N));
if (!rightNumbers.contains(random)) {
rightNumbers.add(random);
Log.d("RightNumbers",rightNumbers.get(j).toString());
j++;
}
}
for(int k =0;k<rightNumbers.size();k++){
numbers.set(rightNumbers.get(k),answer.charAt(k));
Log.d(rightNumbers.get(k)+"", numbers.get(rightNumbers.get(k)).toString());
}
for (int h=0;h<numbers.size()-1;h++) {
Log.d("newNumber", String.valueOf(numbers.get(h)));
}
for(int m=0;m<buttons.length;m++){
buttons[m].setText(numbers.get(m) + "");
}
}
【问题讨论】:
-
索引 70 无效,大小为 10;这实际上说明了一切。您正在尝试访问第 71 个字符,而只有 10 个字符。哪一行会引发异常?
-
当我设置新值时,显示的是问题。这个函数对整数很有效,我所做的只是 char random = alphabet.charAt(randomGenerator.nextInt(N));而不是 int random = randomGenerator.nextInt(10);
标签: java arrays arraylist char