2D数组:创建,初始化和求和

时间:2015-04-15 14:35:04

标签: java arrays sum

所以我应该创建一个程序,创建一个3 x 4数组,看起来像:

1 2 3 4
1 2 3 4 
1 2 3 4

我设法找到了打印该阵列的方法,但我方向的第二部分告诉我总结我的总数。当我编译并运行这个程序时,我得到结果42,它应该是30.我的指示还告诉我,我需要使用嵌套for循环来创建和初始化和总结数组。

public class PartA {
    public static void main (String[] args){
        int [][] array = new int [3][4];
        for(int i = 0; i < array.length; i++){
            for(int j = 0; j < array[i].length; j++){
                int k = array[0][j];
                int l = array[1][j];
                array[0][j] = (i+1)+(j);
                array[1][j] = k;
                array[2][j] = l;
                System.out.print(array[i][j] + " ");
            }
            System.out.println();
        }
        int sum = 0;
        for(int i = 0; i < array.length; i++){
            for(int j = 0; j < array[i].length; j++){
                sum += array[i][j];
            }
        }
        System.out.println("The sum of the contents of this array is " + sum);
    }
}

2 个答案:

答案 0 :(得分:0)

这是因为您一次又一次地分配所有阵列。在第一次for循环后,如果你打印你的数组,它将看起来像。

3 4 5 6
2 3 4 5
1 2 3 4

所以替换下面的代码

array[0][j] = (i+1)+(j);
array[1][j] = k;
array[2][j] = l;

使用

array[i][j] = j+1;

答案 1 :(得分:0)

您的总和代码非常好。但问题在于初始化阵列的方式。请在此处查看您的代码:

 int k = array[0][j];
 int l = array[1][j];
 array[0][j] = (i+1)+(j);
 array[1][j] = k;
 array[2][j] = l;

i=0j = 0时看到您将array[0][0]的值修改为1 对于i =1j =0,您再次将array[0][0]的值修改为2,依此类推。

所以初始化你的数组如:

 for (int i = 0; i < array.length; i++) {
     for (int j = 0; j < array[i].length; j++) {
        array[i][j] = j + 1;
     }
 }
相关问题