繁体   English   中英

返回和求和数组的奇数

[英]Returning and Summing the Odd Numbers of an 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; 
                    }
            }
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语句中,因为它们会立即结束程序的执行。

Java 8+ 解决方案将是

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

这里有几个问题。 首先,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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM