在我的程序中,我需要一个 for-each 循环,它计算给定数组中的偶数并递增变量 even
。为每一个。当我使用标准 for
循环,即 (i = 0; i < numbers.length; i++;)
,然后代码工作正常。但是,我的作业要求我对这个特定问题使用 for-each 循环。我做错了什么吗?
int [] numbers = new int[8];
int even = 0;
int odd = 0;
for (int i = 0; i < numbers.length; i++) {
numbers[i] = (int)(Math.random() * 51 + 50);
}
for (int i : numbers) {
if (numbers[i] % 2 == 0) {
even++;
}
else
odd++;
这会引发错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 54
最佳答案
if (numbers[i] % 2 == 0) {
在您的 foreach 循环中,您不需要使用索引访问它。只需 i
就足够了,因为 foreach 继续为您提供您正在使用的数组/集合中的 元素
直接(不是索引)。
if (i % 2 == 0) {
for (int i : numbers) {
if (i % 2 == 0) {
even++;
}
else{
odd++;
}
}
实际上,您可以通过检查第一个循环本身中的偶数或奇数来完全消除第二个循环,从而缩短您的代码。
关于java - For-Each 循环 Java 错误 ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48686833/