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

打印3D阵列
EN

Stack Overflow用户
提问于 2016-09-29 12:41:48
回答 1查看 535关注 0票数 0

我正在尝试打印一个3D阵列。这是我的密码:

代码语言: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]+ " ");
            }
        }
    }

我做错什么了吗?每次我打电话

代码语言:javascript
复制
 ThreeDRay.print(d3);

我知道这个错误:

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

其余代码如下:

代码语言:javascript
复制
    public static void main( String args[] )
{
Scanner keyboard = new Scanner(in);

    out.print("How many matrices do you wish to enter? :: ");
    int matCnt = keyboard.nextInt();

    //instantiate a ThreeDRay

    int[][][] d3= new int [matCnt][][];


    for (int x=0; x < d3.length ;++x){
          d3[x] = new int[0][0];

    for(int i = 0; i < matCnt; i++)
    {
        out.print("What is the size of 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();
            }
        }



    if (i==0 && i<matCnt)
    {
    for (int l=0; l<=matCnt; l++){
          out.println("\nThreeDRay before setting mat at spot "+l);



    }
    }


       ThreeDRay.print(d3);


       d3[i] = mat;


        out.println("\nThreeDRay after setting mat at spot "+i);

           ThreeDRay.print(d3);

我要展示我是如何填充矩阵的

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

EN

回答 1

Stack Overflow用户

发布于 2016-09-29 13:26:23

您需要关闭这个for循环中的大括号:

代码语言:javascript
复制
    for (int x = 0; x < d3.length; ++x) {
        d3[x] = new int[0][0];
    }

在没有结束大括号的情况下,程序只初始化了d3的一个元素,而剩下的元素仍然为null,程序继续进入下一个for循环,当您试图打印正在进行的整个d3时,这会提供一个NullPointerException

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39770646

复制
相关文章

相似问题

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