Cso*_*agy 4 java lambda java-stream
我正在努力接近理解溪流,因此我正在做一些基本的练习.在这一个中,我想计算奇数的平均值.我写这个算法是为了这样做,但是它给出了不正确的结果(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");
}
Run Code Online (Sandbox Code Playgroud)
我的代码现在在做什么?我应该如何解决它做它应该做的事情?
khe*_*ood 11
(i -> i % 2 == 1)
Run Code Online (Sandbox Code Playgroud)
这仅适用于正奇数,因为在Java中,%如果第一个操作数为负,则运算符返回负数(或零).
如果你只想保留偶数,它应该是:
(i -> i % 2 == 0)
Run Code Online (Sandbox Code Playgroud)
如果要保留所有奇数(正数和负数),可以使用:
(i -> i % 2 != 0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |