【问题标题】:Creating two-dimensional arrays using nested-loop使用嵌套循环创建二维数组
【发布时间】:2018-03-31 00:44:52
【问题描述】:

我正在尝试从书中理解这段代码。

int[][] grade = {
  { 1, 0, 1 },
  { 0, 1, 0 },
  { 1, 0, 1 }
};
for (int i = 0; i < 3; i++) {
  for (int j = 0; j < 3; j++) {
    if (i == j)
      System.out.print(grade[i][j] + grade[j][i] + " ");
    else
      System.out.print(grade[i][j] * grade[j][i] + " ");
  }
  System.out.println(" ");
}

我理解二维数组是行和列的逻辑。我只是不明白答案是怎么来的。

2 0 1
0 2 0
1 0 2

【问题讨论】:

  • 你有什么不明白的地方?应该清楚的是,输入为 0 和 1,操作数为 + 和 *,您只能得到输出 0、1 和 2。

标签: java for-loop multidimensional-array nested


【解决方案1】:

它遍历二维数组。 如果 i 等于 j,例如 (0,0 1,1 2,2),那么它将grade[i][j] 与grade[j][i] 相加。由于 i 和 j 相等,因此它会将位置与自身相加。

当 i 不等于 j 时,它将 Grade[i][j] 与 Grade[j][i] 相乘。

由于它们不相等,它会乘以网格中的 2 个不同位置。 例如

等级[3][1]乘以等级[1][3],而不是自身。

如果您将等级[1][3] 更改为 2,则所有角都将输出为 2

输入:

1 0 2
0 1 0
1 0 1

会输出:

2 0 2
0 2 0
2 0 2

【讨论】:

    【解决方案2】:

    它基本上循环遍历二维数组,如果它看到列号和行号(i 和 j)相同,它将添加它自己。即对角线乘以两倍。对于其余的条目,它将与自身相乘。

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 2016-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多