簡體   English   中英

打印3D陣列

[英]Printing 3D Array

我正在嘗試在數組中填充用戶給定的輸入之前和之后。 因此,如果給定大小為3,則這將是輸出:

//用戶輸入第一個矩陣的值

在添加之前:

數組[0] =

數組[1] =

數組[2] =

//添加用戶輸入

添加后:

數組[0] =行0 = [...]

  row 1 = [...] ... depending on user given size of the first matrix 

Array [1] = Array [2] =

//詢問第二個矩陣的輸入

在添加之前

數組[0] =行0 = [...]

  row 1 = [...] ... depending on user given size of the first matrix 

Array [1] = Array [2] =

添加后

數組[0] =行0 = [...]

  row 1 = [...] ... depending on user given size of the first matrix 

數組[1] =行0 = [...]

  row 1 = [...] ... depending on user given size of the first matrix Array[2] = 

我編寫了以下代碼來實現此目的(在名為ThreeDRayRunner的類中):

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]+ " ");
            }
        }
    }

但是,我得到以下錯誤:

在ThreeDRayRunner.main(ThreeDRayRunner.java:41)的ThreeDRay.print(ThreeDRay.java:13)處的線程“ main”中的java.lang.NullPointerException異常

另外,在運行程序中,我要求用戶輸入將存儲在3D數組中的整數。 為此,我要求輸入大小並在添加空數字后將其打印為3D陣列。 這是我的代碼:

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);

您沒有實例化d3的第2維和第3維。您是要在第一次打印之前執行此行嗎?

d3[i] = mat;

所以它看起來像這樣:

d3[i] = mat;

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

跟進:

看來您實際上不想在第一次打印前設置d3 [i]。 在這種情況下,請確保d3的3個尺寸都不為空,因為您的打印將打印所有尺寸,而不僅是要設置為填充的尺寸。 開始之前,請初始化您的第二維和第三維(至0)。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM