这是我的代码:
int []a = {1,2,3,4,5,7};
Arrays.stream(a)
.map((n, i) -> i)
.filter(n -> a[n] % 2 == 1)
.forEach(System.out::println);
我正在尝试打印所有奇数的INDEX。除了地图,其他一切似乎都很好。它返回一条错误消息:
错误:
<lambda parameter>
无法转换为int。
我有点理解为什么会发生这种情况,但是我不知道如何解决它。
注意:这与从void方法返回的期望不同。这是对泛型的错误理解。
答案 0 :(得分:3)
怎么样:
int[] a = {1,2,3,4,5,7};
IntStream.range(0, a.length)
.filter(e -> a[e] % 2 == 1)
.forEach(System.out::println);
哪个会输出:
0
2
4
5
使用IntStream::range
创建从0到Stream
的整数的a.length
,然后如果该索引处a
的元素为奇数,它将打印出
答案 1 :(得分:3)
要打印所有奇数的索引,我将从有效索引的范围开始。喜欢,
int[] a = { 1, 2, 3, 4, 5, 7 };
IntStream.range(0, a.length).filter(i -> a[i] % 2 == 1).forEach(System.out::println);