【问题标题】:How to Correctly Add Values to a 3D Array in Java如何在 Java 中正确地将值添加到 3D 数组
【发布时间】:2019-01-24 04:13:42
【问题描述】:

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

[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。我尝试了不同的组合,但它们的结果要么相同,要么不正确。有小费吗?

【问题讨论】:

    标签: java arrays for-loop multidimensional-array


    【解决方案1】:

    只需分配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] + "," + "");
        }
    
    }    
    

    【讨论】:

    • 哇。这似乎有点太容易了。谢谢!你能解释一下这背后的原因吗?我只是想确保我理解。
    • 有道理,不用担心。非常感谢。
    • 正如我所说,在每个循环中放置一些 println 语句。如果您不使用 Eclipse IDE,请使用它。它有一个非常好的功能,叫做Debugging,google 一下。
    • 是的,eclipse 工作得很好,还在学习调试功能。另外,刚刚获得了投票的特权!
    • 欢迎来到 Java 和 Stackoverflow 的美丽世界。万事如意!
    【解决方案2】:

    您需要在第二个循环中初始化 adder 的值,然后在更深的循环中将该值加 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();
            }
        }
    }
    

    【讨论】:

    • a++ 指的是什么?
    【解决方案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] = 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();
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-05
      • 1970-01-01
      相关资源
      最近更新 更多