我必須製作一個程序,使其看起來像這樣:無法找出ArrayIndexOutOfBoundsException:-1
| 8 | 1 | 6 |
| 3 | 5 | 7 |
| 4 | 9 | 2 |
它會在每回合放置一個增加的數字,其位置是一個方塊向上和一個方塊向右。 n是正方形的大小,並且必須是奇數。所以上面的例子中n是3.爲了處理數組的邊緣,有3條規則。
1)如果行= -1(放置越過陣列的頂部),則行= N-1,如果
2)COL = N(放置進入過去的陣列的右邊緣),那麼COL = 0
3)如果當前位置已經填滿,或者如果行= -1 & &山坳= n,則放置,而不是低於最後放置
我已經得出結論,規則3應該在規則1和2之前檢查。我編寫了我的程序來打印行和列,而不是將它們放入診斷數組中urposes。由於某種原因,我的規則3如果語句導致-1,超出了數組的邊界,導致「ArrayIndexOutOfBoundsException:-1」。有人看到我做錯了嗎?我有我的規則1 & 2註釋掉了,所以我很確定它不需要處理它們。
//finds how many numbers will be placed based on the
//number of squares to be filled
int simCount = n*n;
int i;
//for loop that keeps track of how many squares are filled
for(i = 1; i<simCount; i++) {
r = r - 1; //moves the placement by row
c = c + 1; //moves the placement by col
if(square[r][c]>0 || (r==-1 && c==n)) { //rule 3
r = r+2;
c = c-1;
}
//if(r==-1) //rule 1
// r=n-1;
//if(c==n) //rule 2
// c=0;
System.out.println("r:"+r + " c:"+c);
}
我改成了這一點,並得到了同樣的事情:如果((R == - 1 &&ç== n)的平方|| [R] [C]> 0){ – brttwrd
@brttwrd呀看到我附加的說明。 –
好吧,現在它可以工作。出於某種原因,儘管規則2 c仍似乎達到n,但我認爲我可以從這裏解決。非常感謝你! – brttwrd