2017-10-19 121 views
-2

我想从书中了解这段代码。使用嵌套循环创建二维数组

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和1,操作数为+和*时,只能得到输出0,1和2。 –

回答

0

它循环遍历2维数组。 如果i等于j,例如(0,0 1,1 2,2),那么它将等级[i] [j]与等级[j] [i]相加。由于我和j是平等的,所以它自己增加了位置。

当我不等于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 
-1

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