我试图从书中理解这段代码。
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 :(得分:0)
它循环通过二维数组。 如果i等于j,例如(0,0 1,1 2,2),则它将等级[i] [j]与等级[j] [i]相加。由于i和j相等,它会自己添加位置。
当i不等于j时,它将grade [i] [j]与等级[j] [i]相乘。
由于它们不相等,它会在网格中乘以2个不同的位置。 e.g。
等级[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
答案 1 :(得分:-1)
它基本上循环遍历二维数组,如果它看到列和行号(i和j)相同,它将自己添加它。即将对角线乘以2。而对于其余的条目,它将与自身相乘。