返回和求和一个数组的奇数

时间:2019-11-13 22:43:43

标签: java arrays return

我正在尝试将所有奇数加到数组中并返回它。对我在做什么错有任何想法吗?

示例:

输入:

Array- [12,6,7,15,1]

它将返回23

 public static int sumOdds(int[] numbers) {
            sum = 0;
            for(int i = 0; i < numbers.length; i++) {
                if (numbers%2==0) 
                return 0;
                else (numbers[i] % 2 != 0) {
                    sum += numbers;
                    return sumOdds; 
                    }
            }

3 个答案:

答案 0 :(得分:3)

public static int sumOdds(int[] numbers) {
   int sum = 0;
   for(int i = 0; i < numbers.length; i++) {
       if(numbers[i] % 2 != 0) {
           sum += numbers[i];                
       }
   }         
   return sum;
}

这应该有效。 return语句不应位于您的ifelse语句之内,因为它们将立即终止程序的执行。

答案 1 :(得分:1)

Java 8+解决方案就是

  public static int sumOdds(int[] numbers) {
      return Arrays.stream(numbers).filter(n -> n % 2 == 1).sum();
  }

答案 2 :(得分:-1)

这里有一些问题。首先,mod操作不适用于数组。它需要在一个数字上执行。此外,您将立即返回sumOdds而不允许整个循环完成。

这可以。

public static int sumOdds(final int[] numbers) {
    int sumOdds = 0;
    for (int number : numbers) {
        if (number % 2 != 0) {
            sumOdds += number;
        }
    }
    return sumOdds;
}

或者更好,使用流。

int sumOdds = IntStream.of(12, 6, 7, 15, 1).filter(number -> number % 2 != 0).sum()