下午好!大家好!第一次發帖
對于我的作業,我們使用算術和嵌套 for 回圈填充陣列。在使用素數之前,我已經完成了一個 2D 陣列的完整填充,盡管我認為我在某個地方搞砸了..
在執行該行時int priorNum = arr[r-1][c];(請參閱下面的完整代碼),我遇到了例外。我正試圖用這個新方程覆寫陣列中的其他行,但我必須被這個極其無禮的 Java 錯誤所阻止。
錯誤: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 10
我的陣列: int[][] arrayDimension = new int[10][6];
public static void populate2D (int[][] arr) {
//hardcode in values first :)
//and then peek up one row, but you can't go above the original row
arr[0][1] = 10;
arr[0][2] = 100;
arr[0][3] = 500;
arr[0][4] = 1000;
arr[0][5] = 5000;
int count = 0;
//for each row..
for (int r = 0; r < arr.length; r ) { //for each row
for ( int c = 0; c < arr[r].length; c ) { //for each column
arr[r][0] = count;
//never navigate out of bounds
//row 0 is where we're at.. how to populate further rows..?
int priorNum = arr[r-1][c];
int nextNum = priorNum * 2;
arr[r][c] = nextNum;
//can't look back .. SO go UP one.. which is r - 1 goes back one.. and then the length goes - 1
//when c is - peek UP a row < and enter last column.. ^
}
count ;
}
}
如果你能理解我想要做什么,我會留下一些我寫的筆記:)
我還可以提供我為您想嘗試的任何測驗撰寫的這個 printArray 方法!
public static void print2DArray(int[][] arr) {
for ( int r = 0; r < arr.length; r ) {
for ( int c = 0; c < arr[r].length; c ) {
System.out.print(arr[r][c] "\t");
}
System.out.println();
}
}
}
感謝您的任何回復/幫助!這里的每個人似乎都很好,我找不到與我的答案有關的問題型別,所以我對發布感到難過,呵呵
uj5u.com熱心網友回復:
我可以看到的問題是,在int priorNum = arr[r-1][c];執行時的第一次迭代中r = 0,正如您的外部 for 回圈所指定的那樣。
因此,您基本上是在嘗試使用負索引訪問 2D 元素,這將導致ArrayIndexOutOfBoundException被拋出。
您可以采用處理第一次迭代的 if 陳述句,這樣您就不會訪問先前的索引。
您還可以查看以下文章的陣列訪問部分:https : //docs.oracle.com/javase/specs/jls/se7/html/jls-10.html
希望這有幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/355689.html
