添加奇数个数组的方法逻辑有什么问题

时间:2016-11-21 21:46:29

标签: java arrays logic

我正在尝试编写一个方法,它将接受数组int []数字并返回数组中所有奇数的总和。我不确定为什么它没有返回正确的值。目前它返回" 3"何时它应该返回" 9"。

public static void main(String[] args) {
    int[] numbers = { 2, 1, 5, 3, 0 };
    System.out.println(oddballsum(numbers));
}

public static int oddballsum(int array[]) {

    int sumodds = 0;

    for (int i = 0; i < array.length; i++) {
        if (array[i] % 2 != 0) { sumodds = +(array[i]);}

    }
    return sumodds;
}

4 个答案:

答案 0 :(得分:4)

sumodds =+ (array[i])表示&#34;将array[i]的值分配给sumodds&#34;。 +()没有区别 - 它在语义上与sumodds = array[i]相同。如果您只想要数组中的最后一个奇数值,请使用此选项。

sumodds += array[i]表示&#34;将sumodds的值增加array[i]。如果您尝试对数组中的奇数值求和,请使用此选项。

答案 1 :(得分:2)

错误的原因在于这段代码......

if (array[i] % 2 != 0) {
    sumodds = +(array[i]);
}

你不是总结或累积你只是用正号分配值

最后,您的代码只返回数组中找到的最后一个奇数值...

你必须这样做:

if (array[i] % 2 != 0) {
    sumodds += array[i];
}

答案 2 :(得分:0)

如果你写了太多代码,你就有更多机会出错,你应该使用java 8 Streams:

  int sumOdd = Arrays.stream(array).filter(t -> t%2==1).sum();
  System.out.println(sumOdd);

答案 3 :(得分:0)

问题在于您的添加运算符=+。如果要添加新值并将其赋值给同一变量,则应为+=。请参考下面的工作代码。

public static void main(String[] args) {
    int[] numbers = {2, 1, 5, 3, 0};
    System.out.println(oddballsum(numbers));
}

public static int oddballsum(int array[]) {
    int sumodds = 0;
    for(int element : array) {
        if(element % 2 != 0) {
            sumodds += element;
        }
    }
    return sumodds;
}