我的代码有问题,它没有引起任何错误,但是没有给出结果。
我写了一个函数,检查数组中所有数字的总和是偶数还是奇数:
package tests;
public class Test {
public static String oddOrEven(int[] array) {
int X = 0;
String y;
int i;
for (i = 0; i <= array.length; i++) {
X += array[i]; // this is line 12
}
if (X % 2 == 0) {
y = "even";
} else {
y = "odd";
}
return y;
}
public static void main(String[] args) {
oddOrEven(new int[] {
4,
8,
9,
64,
21,
7
}); // this is line 25
}
}
我看到的异常:
请帮助。
谢谢
答案 0 :(得分:3)
将您的陈述改为:
for (i = 0; i < array.length; i++) { //this line was wrong by you, use '<' instead of '<='
X += array[i];
}
您正在使用此运算符<=
而不是<
,因此,当达到数组大小(6
)时,您将尝试检索索引为{{ 1}},而索引6
是最高的。
答案 1 :(得分:2)
好吧,我发现了一个小索引问题,并添加了一些格式和输出:
public static String oddOrEven(int[] array) {
int X = 0;
String y;
int i;
//i needs to be smaller than the size as indexes start with 0(not with 1)
for (i = 0; i < array.length; i++) {
X += array[i];// this is line 12
}
if (X % 2 == 0) {
y = "even";
} else {
y = "odd";
}
return y;
}
public static void main(String[] args) {
String result = oddOrEven(new int[]{4, 8, 9, 64, 21, 7});// this is line 25
System.err.print(result);
}
答案 2 :(得分:2)
将循环条件更改为i < array.length
或i <= array.length-1
。
在数组上使用.length
时,它将返回数组中的元素数(如果数组中有1个元素,则将返回1)。但是索引从0开始。因此,您可以通过运行array[0]
获得第一个元素,但是如果运行array[1]
,则会得到“数组索引超出范围异常”。