java调试蛇形数组,老是提示break有错,大大们,帮帮忙啊

来源:百度知道 编辑:UC知道 时间:2024/06/07 07:48:29
/*2、计算并输出nXn的蛇形矩阵。(n>0)
例如4X4的蛇形矩阵如下:
1 3 4 10
2 5 9 11
6 8 12 15
7 13 14 16*/
public class test2{
public static void main(String[] args){
int n=5;
int[][] data=new int[n][n];
int dire;
final int rightUp=0;
final int leftDown=1;
final int down=2;
final int right=3;

dire=down;
int value=1;
int row=0;
int col=0;
data[0][0]=1;
while(value<n*n){//循环条件
switch(dire){//判断打印方向
case rightUp://向右上打印
row--;
col++;
if(row==0&&col==n){dire=down;continue;}
else {dire=right;continue;}
break;
case leftDown://向左下打印
row++;
col--;
if(row!=n&&col==0){dire=down;continue;}
else {dire=right;continue;}
break

你的程序根本不可能走到break这行!if,else里都有continue跳出去了,要么把continue去掉
case right://向右打印
col++;
if(col==n){dire=down;continue;}
else {dire=leftDown;continue;}
break;
一下是我的调试成功版。。。你的算法有问题。我改了一下
public class SnakeMatrix {
public static void main(String[] args) {
int n = 5;
int[][] data = new int[n][n];
int dire;
final int rightUp = 0;
final int leftDown = 1;
final int down = 2;
final int right = 3;

dire = down;
int value = 1;
int row = 0;
int col = 0;
data[0][0] = 1;
while (value < n * n) {// 循环条件
switch (dire) {// 判断打印方向
case rightUp:// 向右上打印
col++;
row--;
if (row == 0 && col != (n - 1)) {
dire = right;
} else if(col == (n - 1)) {
dire = down;
} else {
dire = rightUp;
}
break;
case leftDown:// 向左下打印
row+