您的位置:首页 > 编程语言 > Java开发

java环形打印二维数组

2016-01-05 15:53 609 查看

环形打印二维数组,比如{{1,2,3},{4,5,6},{7,8,9}} ,输出为1,2,3,6,9,8,7,4,5

public class Test {

public void say(int[][] a, int flag, int i, int j, int beg_i, int end_i,
int beg_j, int end_j) {
System.out.println("now:flag=" + flag + ",i=" + i + ",j=" + j
+ ",beg_i=" + beg_i + ",end_i=" + end_i + ",beg_j=" + beg_j
+ ",end_j=" + end_j);
if (beg_i > i || beg_j > j || i > end_i || j > end_j) {
return;
}
if (beg_i == end_i && beg_j == end_j) {
System.out.println(a[i][j]);
return;
}
System.out.println(a[i][j]);
switch (flag) {
case 1:
if (isok(j, end_j)) {
flag = 2;
beg_i++;
i++;
} else {
j++;
}
break;
case 2:
if (isok(i, end_i)) {
flag = 3;
end_j--;
j--;
} else {
i++;
}
break;
case 3:
if (isok(j, beg_j)) {
flag = 4;
end_i--;
i--;
} else {
j--;
}
break;
case 4:
if (isok(i, beg_i)) {
flag = 1;
beg_j++;
j++;
} else {
i--;
}
break;

default:
break;
}
say(a, flag, i, j, beg_i, end_i, beg_j, end_j);
}

public boolean isok(int k, int end) {
if (k == end) {
return true;
}
return false;
}

public static void main(String[] args) {
int[][] a1 = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };

int[][] a2 = { { 1, 2, 3 } };

int[][] a3 = { { 1, 2 }, { 4, 5 }, { 7, 8 } };

int[][] a4 = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 },
{ 13, 14, 15, 16 } };
Test t = new Test();
// t.say(a1, 1, 0, 0, 0, 2, 0, 2);
// System.out.println("");
t.say(a2, 1, 0, 0, 0, 0, 0, 2);
// System.out.println("");
// t.say(a3, 1, 0, 0, 0, 2,0, 1);
// t.say(a4, 1, 0, 0, 0, 3,0, 3);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: