0

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

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++;
            }
        }
    }
4

2 回答 2

1

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

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

if (row >= carMat.length)
    break;

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

于 2013-08-19T23:52:39.910 回答
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循环,外部的只关心数组的行长,内部的只关心行的长度。

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

于 2013-08-20T14:23:27.673 回答