首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印3D阵列

打印3D阵列
EN

Stack Overflow用户
提问于 2016-09-29 03:45:08
回答 1查看 1.8K关注 0票数 0

我试图在数组填充用户给定的输入之前和之后打印它们。因此,如果给定大小为3,则这将是输出:

//用户输入第一个矩阵的值 在添加之前: 阵列= 数组1= 数组2=//在添加后添加用户输入: 数组=行0=. 第1行=.取决于用户给定的第一个矩阵的大小 Array1 = Array2 = //要求第二个矩阵的输入 在添加之前 数组=行0=. 第1行=.取决于用户给定的第一个矩阵的大小 Array1 = Array2 = 加后 数组=行0=. 第1行=.取决于用户给定的第一个矩阵的大小 Array1 =第0行=… 第1行=.取决于用户给定的第一个矩阵的大小,Array2 =

为此,我编写了以下代码(在一个名为ThreeDRayRunner的类中):

代码语言:javascript
复制
public static void print(int [][][] array)
{
    for (int i=0; i<array.length; i++ )
    {
        for (int x=0; x<array[i].length;x++)
        {
            System.out.println();
            System.out.print("row "+ x);
            for (int j=0; j<array[i][x].length;j++)
            {
                    System.out.print (array[i][x][j]+ " ");
            }
        }
    }

但是,我得到以下错误:

线程"main“java.lang.NullPointerException at ThreeDRay.print(ThreeDRay.java:13) at ThreeDRayRunner.main(ThreeDRayRunner.java:41)中的异常

另外,在运行程序中,我要求用户输入存储在3D数组中的整数。要做到这一点,我要求大小和打印3D数组时,是空的,并在给定的数字被添加。这是我的密码:

代码语言:javascript
复制
Scanner keyboard = new Scanner(in);

    out.print("How many matrices are you going to enter? ");
    int s = keyboard.nextInt();


    int[][][] d3= new int [s][][];

    for(int i = 0; i < S; i++)
    {
        out.print("What is the size of the matrix " + i + " ? ");
        int size = keyboard.nextInt();

        int[][] mat = new int[size][size];
        out.println();

        for(int r=0; r<mat.length; r++)
        {
            for(int c=0; c<mat[r].length; c++)
            {
                out.print("Enter a value for spot " + r + " - " + c );
               mat[r][c]=keyboard.nextInt();
            }
        }

       out.println("The array before setting mat at spot "+i);


       ThreeDRay.print(d3);

       d3[i] = mat;


        out.println("The array after setting mat at spot "+i);

       ThreeDRay.print(d3);
EN

回答 1

Stack Overflow用户

发布于 2016-09-29 03:53:33

您不是在实例化d3的第2维和第3维,您是否打算在第一次打印之前执行这一行?

代码语言:javascript
复制
d3[i] = mat;

所以看起来是这样:

代码语言:javascript
复制
d3[i] = mat;

out.println("The array before setting mat at spot "+i);
ThreeDRay.print(d3);

后续行动:

看起来,您实际上不想在第一次打印之前设置d3i。在这种情况下,请确保d3的3个维度都是非空的,因为您的打印将打印所有这些维度,而不仅仅是设置为mat的维度。在开始之前初始化你的第二和第三维度(到0)。

代码语言:javascript
复制
int[][][] d3= new int [s][][];
for (int i=0; i < d3.length ;++i){
  d3[i] = new int[0][0];
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39761058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档