Thanatoms 2015-11-16 14:23 采纳率: 0%
浏览 2574

为什么会出现数组越界问题?

package rectangle;

public class rectangleTest {
static int length = 8;
static int value = 1;
static int[][] arr = new int[length][length];
static direction lastdirection = direction.Right;
public static void main(String[] args) {
iniarrary();
print(arr);
}
public enum direction{
Right,Left,Down,Up;
}

public static void iniarrary(){
int row=0,col=0;

for(int c=0;c<length*length;c++){

arr[row][col] = value;
lastdirection = findDirection(row,col);
switch(lastdirection){
case Right:
col++;
break;
case Down:
row++;
break;
case Left:
col--;
break;
case Up:
row--;
break;
default:
System.out.println("error");
}

value++;
}

}
public static direction findDirection(int row,int col){
direction Direction = lastdirection;
switch(Direction){
case Right:
if((col==length-1)||(arr[row][col+1]!=0)){
Direction = direction.Down;
break;
}
case Down:
if((row==length-1)||(arr[row+1][col]!=0)){
Direction = direction.Left;
break;
}
case Left:
if(row==0){
//Direction = direction.Up;
break;
}else if(arr[row-1][col]!=0){
Direction = direction.Up;
break;
}
case Up:
if(((row==0)&&(col==0)))
{
Direction = direction.Right;
break;
}
}

    return Direction;
}


public static void print(int[][] arr){
    for (int i=0;i<length;i++){
        for(int j=0;j<length;j++){

            System.out.printf("%2d",arr[i][j]);

        }
        System.out.println();
    }

}   

}

运行时出现以下错误,是为什么?是这个原因吗if(arr[row-1][col]!=0){
Direction = direction.Up;
break;
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at rectangle.rectangleTest.iniarrary(rectangleTest.java:18)
at rectangle.rectangleTest.main(rectangleTest.java:9)

  • 写回答

4条回答 默认 最新

  • 晓呆同学 2015-11-16 14:36
    关注

    iniarray方法中的for循环for(int c=0;c<length*length;c++){ 应该是 c<length

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)