需要我的代码帮助,当我尝试运行它时,它给了我arrayindexoutofbounds 0异常,它指向“ results [counter] = random;”行,以及我在正确打印之前写的system.out.println行。计数器为0,numToss为5,随机值为0(或1)”
public int[] results = new int[numToss];
public void fillArray() {
int counter = 0;
//int[] results = new int[numToss];
int random;
while (counter < (numToss)) {
if (Math.random() > 0.5) random = 1;
else random = 0;
System.out.println("Counter is " + counter + " and numToss is " + numToss + " and random is " + random);
results[counter]=random;
counter++;
}
}
最佳答案
arrayindexoutofbounds 0异常
这只能说明一件事,即结果数组的大小为0。
请注意,当调用fillArray方法时,您正在测试numtoss的值,它为您提供了一个非零值,但这并不重要。不,重要的是在创建结果数组时其值,而在创建结果数组时numToss可能为零。
解决方案:创建结果数组时,请确保numToss具有有意义的非零值。
编辑
也许您想要分配但不重新声明变量来执行此操作:
public void fillArray() {
//int[] results = new int[numToss];
results = new int[numToss]; // do not re-declare this variable!
for (int counter = 0; counter < results.length; counter++) {
results[counter] = (Math.random() > 0.5) ? 1 : 0;
}
}
或者,您可以重新声明变量,并让您的方法返回创建的int数组。
public int[] fillArray() {
int[] results = new int[numToss];
for (int counter = 0; counter < results.length; counter++) {
results[counter] = (Math.random() > 0.5) ? 1 : 0;
}
return results;
}
注意:这是为什么在遍历数组时应使用for循环的原因之一,因为这完全避免了ArrayIndexOutOfBoundsExceptions。
另外,由于您的结果数组似乎仅包含2个值,因此请考虑使其成为布尔值而不是整数的数组。