【问题标题】:I am trying to understand a code on adjacency matrix written in Java language ,I am not able to understand the enhanced for loop part我正在尝试理解用 Java 语言编写的邻接矩阵代码,但我无法理解增强的 for 循环部分
【发布时间】:2022-07-08 01:19:09
【问题描述】:
 // Add edges
  public void addEdge(int i, int j) {
    adjMatrix[i][j] = true;
    adjMatrix[j][i] = true;
  }

  // Remove edges
  public void removeEdge(int i, int j) {
    adjMatrix[i][j] = false;
    adjMatrix[j][i] = false;
  }

  // Print the matrix
  public String toString() {
    StringBuilder s = new StringBuilder();
    for (int i = 0; i < numVertices; i++) {
      s.append(i + ": ");
      for (boolean j : adjMatrix[i]) {
        s.append((j ? 1 : 0) + " ");
      }
      s.append("\n");
    }
    return s.toString();
  }

 

解释代码中的以下行:

 for (boolean j : adjMatrix[i]) {
        s.append((j ? 1 : 0) + " ");

使用布尔运算符的增强 for 循环不清楚。 如何理解它以及它是如何工作的? 以上代码由 programiz.com 获取。 以上代码与邻接矩阵有关。

【问题讨论】:

  • programiz.com/java-programming/enhanced-for-loopprogramiz 对此语法有自己的指南,是否有不清楚的具体部分?
  • 我不明白什么是不清楚的。你不明白for循环一般是怎么工作的,你不知道三元运算符,你不明白+ " "吗?
  • j ? 1 : 0 是一个条件运算符。它几乎说如果j 为真,则使用1,否则使用0。然后使用+ " " 将这些数字“转换”为带有空格的字符串。
  • 查看The for Statement页面的最后一部分。

标签: java loops foreach boolean-expression adjacency-matrix


【解决方案1】:

举个例子

adjMatrix = [
            [true , false , true],
            [false , false , true],
            [true , true , false]
            ]

第 1 步:遍历矩阵的每一行

当 i = 0

for (boolean j : [true , false , true]) {
        s.append((j ? 1 : 0) + " ");

第 2 步:遍历行的每个布尔元素

每次迭代中 j 的值将是:

第 3 步和第 4 步:添加到 S(变量)中

【讨论】:

    猜你喜欢
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-05
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多