我有一個分配與方法麻煩時,獲得索引越界的錯誤,所以基本上,當我用這個方法使用%操作
public class DFS {
private int[][] a;
public DFS(int[][] a){
this.a=a;
}
/**
* Recursively visits all vertices in matrix
* @param x
* @param y
*/
public void search(int x, int y){
if(a[x][y] == -1){
return;
}
else{
a[x][y] = -1;
System.out.println((char)(x+65)+", "+(char)(y+65));
if(x<a.length-1){
if(a[x+1][y] == 1){
search(x+1, y);
}
}
else{
if(a[(x+1)%a.length][y] == 1){
search((x+1)%a.length, y);
}
}
if(y<a.length-1){
if(a[x][y+1] == 1){
search(x, y+1);
}
}
else{
if(a[x][(y+1)%a.length] == 1){
search(x, (y+1)%a.length);
}
}
if(x>0){
if(a[x-1][y] == 1){
search(x-1, y);
}
}
else{
if(a[(x-1)%a.length][y] == 1){
search((x-1)%a.length, y);
}
}
if(y>0){
if(a[x][y-1] == 1){
search(x, y-1);
}
}
else{
if(a[x][(y-1)%a.length] == 1){
search(x, (y-1)%a.length);
}
}
}
}
}
我不斷收到ArrayIndexOutOfBounds
錯誤,但如果我使用n作爲數組大小的模數,這怎麼可能?這是完整的類文件。
有很多情況下,你不使用模量。沒有足夠的這裏來完全診斷你的問題。拋出什麼異常? – Greg 2014-12-03 02:58:52
在第50,31和56行,但我不需要模數的變量沒有被遞增正確的?如果他們不增加 – Bioman20 2014-12-03 03:00:33
,他們如何超出範圍請發佈完整的堆棧跟蹤並告訴我們哪些線路導致了錯誤。不要只給行號,而是告訴我們哪行是那些行號。另外,請告訴我們錯誤期間數組的大小以及傳入的值。最後,我建議使用這樣的代碼調試器 – 2014-12-03 03:01:27