java - 循环java中的值之和

标签 java arrays

所以我有一个数组,循环输出包含 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 是一个数组的数组。

  1. Arrays.stream() 创建数组内容的。在您的情况下,它将是数字数组。

  2. arr->Arrays.stream(arr).filter(value->value==1).count() 执行相同的操作,但这次流是实际数字他们自己。然后它们通过过滤器,只传递 1 并对它们进行计数。 由于 count() 返回一个 long 值,因此所有这些都需要放入 mapToLong 中,结果如下: mapToLong(arr -> Arrays.stream(arr ).filter(value -> value == 1).count()).

  3. 其输出(即每个数组中 1 的计数)现在再次过滤并通过 filter(onesCount -> OnesCount >= 3).count() 进行计数,以查找计数 >= 3。然后将它们作为最终的结果返回。

关于java - 循环java中的值之和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59219788/

相关文章:

c++ - std::sort 比较器,它查看元素的(原始)索引

java - 关于不可变类的完整功能

c - 在C中为数组动态分配内存

c - 如何在 C 中声明结构数组

C++回文检查解决方案被一个测试用例触发

c++ - 在 C++ 中使用 map 而不是 array 来保护在数组边界之外的搜索?

java - 为多个类生成单个 WSDL 文件

java - 将 Json 对象映射到 POJO 时处理未知的 Json 属性

java - 优化 TableLayout 中的 TextView 颜色

java - 使用 Saxon 和 XSLT 转换 JDOM XML 文档