eclipse 如何在二维数组中添加元素

eivnm1vs  于 2022-11-04  发布在  Eclipse
关注(0)|答案(6)|浏览(296)

我只想知道这个程序是如何工作的,为什么答案是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的。

wlsrxk51

wlsrxk511#

它只是对角线的求和部分,具体地说,table[2][1]是8,table[1][2]是6。
要了解发生了什么,最简单的方法是在循环中添加一个输出语句:

for (int i = 2; i > 0; i--) {
  sum += table[i][3 - i];
  System.out.println(i + " " + (3 - i) + " " + table[i][3 - i]);
}
juud5qan

juud5qan2#

您的程序接受table[2][1](值为8)和table[1][2](值为6)元素,将它们相加并打印为输出(值为14)
关于你在标题中的问题,你的主要方法应该更像这样:

public static void main(String[] args) {
    int[][] table = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    int sum = 0;

    System.out.println("Before\n");

    for (int i = 0; i < table.length; i++) {
        for (int j = 0; j < table[i].length; j++) {
            sum += table[i][j];
            System.out.printf("Sum after %d iteration: %d\n", i + j + 1, sum);
        }
    }

    System.out.println("\nIn total: " + sum);
}

i + j + 1是当前迭代的和,它是两个轴的和,并且由于Java具有基于0的索引表,因此它增加1
希望能有所帮助!

ar7v8xwq

ar7v8xwq3#

i本身并不直接对应于矩阵中的任何内容,它只是for循环每次循环时所更改的变量的名称。
[i][3-i]itable的交互方式。在for循环的第一轮中,i将等于2。因此,sum将增加table[2][1],这是矩阵的第3行第2列,其值为8
在for循环的第二轮中,i将等于1。因此,sum将增加table[1][2],这是矩阵的第2行和第3列,其值为6
因此,sum将等于8+6=14。

p1iqtdky

p1iqtdky4#

for循环的作用如下:

  1. i = 2.进入循环。
    1.将table[2][3-2]加到总和中。总和现在是8,因为table[2][1] =8
    1.将i减1。
  2. i = 1。进入循环。
    1.将table[1][3-1]加到总和中。总和现在是14,因为table[1][2] =6
    1.将i减1。
  3. 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
atmip9wb

atmip9wb5#

for (int i = 2; i > 0; i--)

因此从2开始它检查i是否大于0循环一次然后i--减1再次检查仍然大于0循环一次然后减1再次检查是否大于0现在0它不大于0所以停止循环//因此循环2次

//[0] = 1st [1] = 2nd [2] = third ...

//counting in code starts at zero not 1 so and array of 3 counts a the spaces 0,1,2

int sum = 0;//sum starts at zero

//using the value of i translates as such

sum += table[2][3-2];//[2][1]this is 3rd group 2nd part so sum += 8
//then
sum += table[1][3-1];//[1][2]this is 2nd group 3rd part so sum += 6

0 + 8 + 6 = 14位

0mkxixxg

0mkxixxg6#

第一个当你初始化一个二维数组时,把第一个方括号[ ]看作一列,把第二个方括号[ ]看作一行。例如:int[][] num = new int[10][5],这意味着10列和5行。

如果要填充二维数组中的所有元素,必须使用两个***for***循环:

int[][] num = new int[10][5];

for (int i =0; i < num.length;i++ ) {
     for (int x=0; x < num[0].length;i++) { //we used num[0] because we need the length of the rows not the columns
           num[i][x] = //any value you want to assign
          }
 }

相关问题