簡體   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