我只想知道这个程序是如何工作的,为什么答案是14。下面是代码:
public class extra {
public static void main(String[] args){
int[][] table = {{1,2,3},{4,5,6},{7,8,9}};
int sum = 0;
for( int i = 2; i > 0; i-- )
sum += table[i][3-i];
System.out.println(sum);
}
}
我了解矩阵的设置方式
123
456
789
但是在这个问题中i是什么,因为我以为是行数,但是既然它在for循环中,是不是意味着i是矩阵中的数?还有,[i][3-i]是如何影响的?答案是14,我只想知道它是怎么变成14的。
6条答案
按热度按时间wlsrxk511#
它只是对角线的求和部分,具体地说,
table[2][1]
是8,table[1][2]
是6。要了解发生了什么,最简单的方法是在循环中添加一个输出语句:
juud5qan2#
您的程序接受table[2][1](值为8)和table[1][2](值为6)元素,将它们相加并打印为输出(值为14)
关于你在标题中的问题,你的主要方法应该更像这样:
i + j + 1是当前迭代的和,它是两个轴的和,并且由于Java具有基于0的索引表,因此它增加1
希望能有所帮助!
ar7v8xwq3#
i
本身并不直接对应于矩阵中的任何内容,它只是for循环每次循环时所更改的变量的名称。[i][3-i]
是i
与table
的交互方式。在for循环的第一轮中,i
将等于2。因此,sum
将增加table[2][1]
,这是矩阵的第3行第2列,其值为8
。在for循环的第二轮中,
i
将等于1。因此,sum
将增加table[1][2]
,这是矩阵的第2行和第3列,其值为6
。因此,
sum
将等于8+6=14。p1iqtdky4#
for循环的作用如下:
i
= 2.进入循环。1.将
table[2][3-2]
加到总和中。总和现在是8,因为table[2][1]
=8。1.将
i
减1。i
= 1。进入循环。1.将
table[1][3-1]
加到总和中。总和现在是14,因为table[1][2]
=6。1.将
i
减1。i
= 0.0不大于0,所以我们退出循环。和变成14。像
int[][] table
这样的二维数组有两个索引,一个用于“外部”数组(或行),另一个用于“内部”数组(列)。让我们以代码中的
int[][] table = {{1,2,3},{4,5,6},{7,8,9}};
为例:table[1][2]
:1意味着我们应该在数组中的索引1处查找,即{4,5,6}
。2意味着我们应该在数组中的索引2处查找,即6
。换句话说,就是table[1][2] == 6
。table[2][0]
:2意味着我们应该在数组中的索引2处查找,即{7,8,9}
。0意味着我们应该在{7,8,9}
的索引0处查找,即7
。atmip9wb5#
因此从2开始它检查i是否大于0循环一次然后i--减1再次检查仍然大于0循环一次然后减1再次检查是否大于0现在0它不大于0所以停止循环//因此循环2次
0 + 8 + 6 = 14位
0mkxixxg6#
第一个当你初始化一个二维数组时,把第一个方括号[ ]看作一列,把第二个方括号[ ]看作一行。例如:
int[][] num = new int[10][5]
,这意味着10列和5行。如果要填充二维数组中的所有元素,必须使用两个***for***循环: