如何在Java中正确向3D数组添加值

时间:2019-01-24 04:13:43

标签: java arrays for-loop multidimensional-array

我正在尝试创建一个三维数组,其输出为:

[1,2,3], [1,2,3], [1,2,3], [1,2,3]
[1,2,3], [1,2,3], [1,2,3], [1,2,3]
[1,2,3], [1,2,3], [1,2,3], [1,2,3]
[1,2,3], [1,2,3], [1,2,3], [1,2,3]
[1,2,3], [1,2,3], [1,2,3], [1,2,3]

这是我想出的代码:

public class Triples {

    public static void main(String[] args) {

        int[][][] triplet = new int[5][4][3];

        for (int i = 0; i < triplet.length; i++) 
        {
            for (int j = 0; j < triplet[i].length; j++) 
            {
                System.out.print("[");
                for (int k = 0; k < triplet[i][j].length; k++) 
                {
                    triplet[i][j][k] = i+1;
                    System.out.print(triplet[i][j][k] + "," + "");
                }
                System.out.print("]");
            }
            System.out.println();
        }
    }
}

我得到的结果如下:

[1,1,1,][1,1,1,][1,1,1,][1,1,1,]
[2,2,2,][2,2,2,][2,2,2,][2,2,2,]
[3,3,3,][3,3,3,][3,3,3,][3,3,3,]
[4,4,4,][4,4,4,][4,4,4,][4,4,4,]
[5,5,5,][5,5,5,][5,5,5,][5,5,5,]

我的问题是我不确定如何将第三个for循环中的值递增为1、2和3。我尝试了不同的组合,但是它们导致的结果相同或不正确。有小费吗?

3 个答案:

答案 0 :(得分:3)

只需分配k+1的值。就这样

说明:(我不太擅长。) ij的值在k循环中不会改变。因此,您不需要它们。但是ok k的值在每次迭代中都会改变。而且每次都会重置为0。但是我们不希望0更改为k+1。 请在语句中放入一些调试println。他们有很大帮助。

triplet[i][j][k] = k+1;

有了这个新的最里面的for循环,就像:

for (int k = 0; k < triplet[i][j].length; k++) 
{
    triplet[i][j][k] = k+1;

    //Don't put the comma after last digit.
    if(k==triplet[i][j].length-1) {
        System.out.print(triplet[i][j][k] );
    }else {
        System.out.print(triplet[i][j][k] + "," + "");
    }

}    

答案 1 :(得分:0)

您需要在第二个循环中初始化加法器的值,然后在较深的循环中将值加1。 试试这个:

public class Triples {

    public static void main(String[] args) {

        int[][][] triplet = new int[5][4][3];

        for (int i = 0; i < triplet.length; i++) 
        {
            for (int j = 0; j < triplet[i].length; j++) 
            {
                System.out.print("[");
                for (int k = 0; k < triplet[i][j].length; k++) 
                {
                    triplet[i][j][k] = k+1;
                    System.out.print(triplet[i][j][k] + "," + "");
                }
                System.out.print("]");
            }
            System.out.println();
        }
    }
}

答案 2 :(得分:0)

public class Triples {

    public static void main(String[] args) {

        int[][][] triplet = new int[5][4][3];

        for (int i = 0; i < triplet.length; i++) 
        {
            for (int j = 0; j < triplet[i].length; j++) 
            {
                System.out.print("[");
                for (int k = 0; k < triplet[i][j].length; k++) 
                {
                    triplet[i][j][k] = k+1;
                        if(k==triplet[i][j].length-1) 
                            System.out.print(triplet[i][j][k] );
                        else
                            System.out.print(triplet[i][j][k] + ",");
                }
                if(j==triplet[i].length-1) 
                    System.out.print("]");
                else
                    System.out.print("], ");
            }
            System.out.println();
        }
    }
}