打印数组越界java

时间:2013-08-19 23:49:49

标签: java arrays methods indexing bounds

我有一组看起来像这样的对象:

  

1:[volvo,200],[jaguar,900]
     2:[bmw,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++;
            }
        }
    }

2 个答案:

答案 0 :(得分:1)

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

row++之后,添加一项检查,看看row是否已从carMat数组的末尾开始。

if (row >= carMat.length)
    break;

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

答案 1 :(得分:0)

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循环,外部循环仅关注行中数组的长度,内部循环仅关注行的长度。

但是,从性能的角度来看,我确实发现你的单循环实现很有趣。