【问题标题】:Why is my second array not being fully printed out?为什么我的第二个数组没有完全打印出来?
【发布时间】:2015-11-06 11:49:36
【问题描述】:

我正在尝试在列和行中创建以下数字的表示形式。

为什么我的第二个数组没有完全打印出来?

此外,数字不是以行列方式打印的。这是为什么呢?

public class MultidimensionalArrays
{

public static void main(String[] args)
{   
    //initializes rows and columns
    //first box = row, second box = column
    int firstarray[][] = {{3, 4, 5, 6,} , {8, 9}};

    //System.out.println(firstarray[0][1]) = 9;

    //initializes another rows and columns
    int secondarray[][] = {{11, 12, 13} , {88} , {100, 200, 300} , {33, 35, 37}};

    //displays the 1st array
    System.out.println("this is the 1st array: ");
    display(firstarray);

    System.out.println();

    //displays the 2nd array
    System.out.println("this is the 2nd array: ");
    display(secondarray);
}

//makes a method to display out the arrays
public static void display(int x[][])
{
    //makes a for-loop that prints out the row
    for(int row = 0; row < x.length; row++)
    {
        //makes a for-loop that prints out the column
        for(int column = 0; column < x.length; column++)
        {
            //sysouts the rows & columns
            System.out.print(x[row][column] + "\t");
        }
    }
}


}

错误代码:

this is the 1st array: 
3   4   8   9   
this is the 2nd array: 
11  12  13  Exception in thread "main"           java.lang.ArrayIndexOutOfBoundsException: 3
at MultidimensionalArrays.display(MultidimensionalArrays.java:37)
at MultidimensionalArrays.main(MultidimensionalArrays.java:24)

【问题讨论】:

    标签: java arrays eclipse for-loop


    【解决方案1】:

    您的数组不是矩阵,因此列长不等于行长。事实上,不同的行有不同的列数,所以你必须使用每行的单独长度。

    试试:

    for(int row = 0; row < x.length; row++)
    {
        //makes a for-loop that prints out the column
        for(int column = 0; column < x[row].length; column++)
        {
            //sysouts the rows & columns
            System.out.print(x[row][column] + "\t");
        }
    }
    

    【讨论】:

      【解决方案2】:

      您正在使用行数来打印列。这些显然与您的测试用例不匹配。像这样修改

      //makes a for-loop that prints out the row
      for(int row = 0; row < x.length; row++)
      {
          //makes a for-loop that prints out the column
          for(int column = 0; column < x[row].length; column++)
          {
              //sysouts the rows & columns
              System.out.print(x[row][column] + "\t");
          }
          System.out.println();
      }
      

      您可能还应该在每行之后打印一个新行。我为此添加了代码。

      【讨论】:

        猜你喜欢
        • 2021-12-31
        • 1970-01-01
        • 2018-11-06
        • 1970-01-01
        • 1970-01-01
        • 2015-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多