我有一组看起来像这样的对象:
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++;
}
}
}
答案 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
循环,外部循环仅关注行中数组的长度,内部循环仅关注行的长度。
本