偶数の平均は、バック間違った値を与えます

高リンギング:

私は近いので、私はいくつかの基本的な練習をやっている流れを理解するために取得しようとしています。この1で、私は奇数の平均値を計算したいと思います。私はそうするように、このアルゴリズムを書いたが、それは間違った結果(8.0)をバック与えます。私はそれをデバッグしようとしたが、私はそれが実際に何をするか見つけることができませんでした。

List<Integer> numbers = Arrays.asList(1, 3, -2, -4, -7, -3, -8, 12, 19, 6, 9, 10, 14);

OptionalDouble result = numbers.stream()
                               .filter(i -> i % 2 == 1)
                               .mapToDouble(i -> i).average();
if (result.isPresent()) {
   System.out.println(result);
} else {
   System.out.println("Error");
}

私のコードは今何をしているのですか?どのように私はそれを行うことになっているものを行うにそれを修正する必要がありますか?

KelvॊD:
(i -> i % 2 == 1)

これは、Javaであるため、正の奇数の場合のみ真である%最初のオペランドが負である場合、オペレータは、負の数を返す(またはゼロ)。

あなただけ保持する場合でも数字を、それは次のようになります。

(i -> i % 2 == 0)

あなたはすべての奇数(正と負)を保持したい場合は、使用することができます。

(i -> i % 2 != 0)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=182622&siteId=1