java函数检查总和是偶数还是奇数,为什么我的代码不起作用?

时间:2019-02-15 18:20:33

标签: java

我的代码有问题,它没有引起任何错误,但是没有给出结果。

我写了一个函数,检查数组中所有数字的总和是偶数还是奇数:

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

}

}

我看到的异常:

enter image description here

请帮助。

谢谢

3 个答案:

答案 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.lengthi <= array.length-1。 在数组上使用.length时,它将返回数组中的元素数(如果数组中有1个元素,则将返回1)。但是索引从0开始。因此,您可以通过运行array[0]获得第一个元素,但是如果运行array[1],则会得到“数组索引超出范围异常”。