所以我有一个数组,循环输出包含 3 个或更多 1 值的行数
int i, j,rcount,threecount;
double A[][] = {{0.5, 0.5, 0.5, 0.5, 0.5},
{0, 1, 0, 1, 1},
{0.5,1,0.5,0.5,0},
{0,0.5,0,0.5,0},
{1,1,1,1,1},
{0,0,0,0.5,0.5},
{0,0.5,0,0,1}};
for (i = 0; i < 7; i++) {
threeCount = 0;
rcount = 0;
for (j = 0; j < 5; j++) {
if (A[i][j] == 1) threeCount++;
}
if (threeCount >= 3 )
rcount++;
if (rcount==1)
System.out.print((rcount ) + " ");
}
现在的输出是
0 1 0 0 1 0 0
我希望输出是
2
最佳答案
另一种方法是使用流。
double A[][] = { { 0.5, 0.5, 0.5, 0.5, 0.5
}, { 0, 1, 0, 1, 1
}, { 0.5, 1, 0.5, 0.5, 0
}, { 0, 0.5, 0, 0.5, 0
}, { 1, 1, 1, 1, 0
}, { 1, 1, 1, 1, 1
}, { 0, 0, 0, 0.5, 0.5
}, { 0, 0.5, 0, 0, 1
}
};
long count = Arrays.stream(A).mapToLong(
arr -> Arrays.stream(arr).filter(value -> value == 1).count()).filter(
onesCount -> onesCount >= 3).count();
System.out.println(count);
其工作原理如下:
你的数组 A 是一个数组的数组。
Arrays.stream()
创建数组内容的流
。在您的情况下,它将是数字数组。arr->Arrays.stream(arr).filter(value->value==1).count()
执行相同的操作,但这次流是实际数字他们自己。然后它们通过过滤器,只传递 1 并对它们进行计数。 由于count()
返回一个 long 值,因此所有这些都需要放入mapToLong
中,结果如下:mapToLong(arr -> Arrays.stream(arr ).filter(value -> value == 1).count())
.其输出(即每个数组中 1 的计数)现在再次过滤并通过
filter(onesCount -> OnesCount >= 3).count()
进行计数,以查找计数>= 3
。然后将它们作为最终的长
结果返回。
关于java - 循环java中的值之和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59219788/