java实现蛇形输出_求好人帮忙调试下此段代码,输出一个蛇形矩阵。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

矩阵形式如下:

1 3 4 10 11 21 22

2 5 9 12 20 23 34

6 8 13 19 24 33 35

7 14 18 25 32 36 43

15 17 26 31 37 42 44

16 27 30 38 41 45 48

28 29 39 40 46 47 49

public class Test6_3 {

public static void main(String[] args) {

int n = 7;

int move;//当前数字的移动方向

int[][] data = new int[n][n];

final int Down = 0;//下

final int UpRight = 1;//右上

final int Banon = 2;//右

final int Right = 3;//左下

move = Down;//初始移动方向

int value = 1;//数组元素的值

int row = 0;//第一维的下标

int col = 0;//第二维的下标

data[0][0] = 1;//初始化第一个元素

for(int i=1; i<=n*n; i++) {

switch(move) {

case Down:

row++;//移动到下一行

if(col == 0) {//在第一列移动时

move = UpRight;

continue;//跳过该次循环

}else if(col==n-1) {//在最后一列移动时

move = Banon;

continue;//跳过该次循环

}

break;

case UpRight:

row--;//移动到上一行

col++;//移动到后一列

if(col==n-1) {//超过边界

//row++;//后退

//col--;//后退

move = Down;

continue;//跳过该次循环

}else if(row==0) {//超过边界

//row++;//后退

//col--;//后退

move = Right;

continue;//跳过该次循环

}

break;

case Banon:

row++;//移动到上一行

col--;//移动到下一列

if(row==n-1) {//超过边界

//row--;//后退

//col++;//后退

move = Right;

continue;

}else if(col==0) {//超过边界

//row--;//后退

//col++;//后退

move = Down;//跳过该次循环

continue;

}

break;

case Right:

col++;//移动到下一列

if(row==0) {//在第一行移动时

move = Banon;

continue;

}else if(col==n-1) {//在最后一列移动式

move = UpRight;

continue;//跳过该次循环

}

break;//跳过该次循环

}

value++;//数值增加1

data[row][col] = value;//赋值

}

//输出数组中的元素

for(int i=0; i

for(int j=0; j

if(value<10) {//右对齐

System.out.print(' ');

}

System.out.print(data[i][j]);

System.out.print(' ');

}

System.out.println();

}

}

}

编译没问题,但是一运行就在“data[row][col] = value;//赋值”这一行 出现Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7。

求好人帮忙调试下,万分感谢!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值