for语句中的java索引超出范围
我在运行时遇到一个错误:“索引数组超出范围”,但我找不到位置。该程序假设取25个随机数,将它们分成偶数和奇数,并显示单独的组。我调试了第一个语句,这很好,这是我的第二个语句,但我不知道为什么。两个数组元素不能相等吗
public class EvensandOdds {
public static void main(String[] args) {
int i;
int countEven = 0;
int countOdd = 0;
int num;
int numEven = 0;
int numOdd = 0;
int [] evenNum;
int [] oddNum;
int [] ranNum = new int[25];
for (i = 0; i <= 24; i++) {
num = (int) (100 * Math.random());
ranNum[i] = num;
if (num % 2 == 0) {
numEven += 1;
} else numOdd += 1;
}
evenNum = new int[numEven];
oddNum = new int [numOdd];
for (i = 0; i <= 24; i++) {
if (ranNum[i] % 2 == 0) {
evenNum[countEven] = ranNum[i]; //This separates the two groups into different arrays. Is this a valid statement?
countEven += 1;
} else oddNum[countOdd] = ranNum[i];
countOdd += 1;
}
System.out.print("Your even numbers are: \n");
for (i = 0; i <= countEven; i++) {
System.out.print(evenNum[i]);
}
System.out.print("Your odd numbers are: \n");
for (i = 0; i <= countOdd; i++) {
System.out.print(oddNum[i]);
}
}
}
# 1 楼答案
countOdd += 1
对偶数和奇数都执行,请尝试更改以下行:进入:
更改(如Lion建议的)
及
进入
及
# 2 楼答案
oddNum数组长度为8。。。但使用较大的countOdd,这会导致第行出现异常:
导致此问题的原因是countOdd+=1;不包含在括号内,如:
# 3 楼答案
countOdd += 1;
语句不在一对大括号内,因此即使数字为偶数,也会执行它这将解决您的错误