【发布时间】:2022-01-19 13:03:09
【问题描述】:
这是我的程序以顺时针螺旋方式打印从 1 到 N^2 的自然数。我收到以下错误
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index -2147483648
out of bounds for length 3
at Spiral.main(Spiral.java:13)
这是我的程序
class Spiral{
public static void main(String[] args) {
System.out.println("Enter value of N");
Scanner sc=new Scanner(System.in);
int N=sc.nextInt();
int arr[][]=new int[N][N];
int r1=0, c1=0, r2=N-1, c2=N-1, flag=1; int i=0,j=0;
while(flag<=N*N)
{ for(j=c1;j<=c2;j++)
arr[r1][j]=flag++;
for( i=r1+1;i<=r2;i++)
arr[i][c2]=flag++; //this is the line of error
for(j=c2-1;j>=c1;j--)
arr[r2][j]=flag++;
for(i=r2-1; i>r1+1;i--)
arr[i][c1]=flag++;
r1++; r2--; c1++; c2--;
}
System.out.println("The Circular Matrix is:");
for( i=0;i<N;i++)
{
for( j=0;j<N;j++)
{
System.out.print(arr[i][j]+ "\t");
}
System.out.println();
}
}
}
代码在 N=2 时工作正常,但在 N=3,4 等情况下开始出现此错误。如果 N=3,arr[i][c2] 的最大值将是 arr[2][2]落在 3x3 矩阵的范围内。有人可以解释为什么我会收到这个错误吗?
【问题讨论】:
标签: java arrays error-handling indexoutofboundsexception spiral