簡體   English   中英

打印數組越界java

[英]printing array out of bounds java

我有一個看起來像這樣的對象數組:

1:[volvo,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++;
            }
        }
    }

您已經檢查了是否要離開當前行的末尾,這很好,但是還沒有檢查行是否已用完。

row++ ,添加檢查row是否超出了carMat數組的末尾。

if (row >= carMat.length)
    break;

假定您至少有一行。 甚至在進入while循環之前,您可能要檢查是否至少有一行。

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循環,外部僅關心行中數組的長度,內部僅關心行的長度。

但是,從性能的角度來看,我確實發現您的單循環實現很有趣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM