【问题标题】:printing array out of bounds java打印数组越界java
【发布时间】:2013-08-21 21:38:07
【问题描述】:

我有一个像这样的对象数组:

1:[沃尔沃,200],[捷豹,900]
2:[宝马,300]
3:[斯柯达,100], [(无输入)] , [(无输入)]


这是我只打印具有值的区域的方法(内部有一些格式,但这不是问题)。得到一个超出范围的错误......我需要做什么?谢谢!

        public static void printMat(Car[][] carMat){
        int row = 0;
        int column = 0;
        while ((carMat[row][column] != null)){
            System.out.printf("( %-8s : %,9d )", carMat[row][column].getName(), carMat[row][column].getPrice());
            if (column == carMat[row].length - 1){
                System.out.print("\n");
                row++;
                column = 0;
            } else {
                column++;
            }
        }
    }

【问题讨论】:

    标签: java arrays methods indexing bounds


    【解决方案1】:

    您已检查是否要离开当前行的末尾,这很好,但您还没有检查是否已用完行。

    row++ 之后,添加一个检查以查看row 是否超出了carMat 数组的末尾。

    if (row >= carMat.length)
        break;
    

    假设您至少有一行。在进入while 循环之前,您可能需要检查是否至少有一行。

    【讨论】:

      【解决方案2】:
      for(int row = 0; row < car.length; row++){
          for(int column = 0; column < car[row].length; column++){
              //print statement
              if(column == car[row].length - 1){
                   System.out.println();
              }
          }
      }
      

      这个实现使用了一对for循环,外层只关心数组的行长,内层只关心行的长度。

      不过,从性能的角度来看,我确实发现您的单循环实现很有趣。

      【讨论】:

        猜你喜欢
        • 2019-05-10
        • 1970-01-01
        • 2013-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多