public static int[][] test(int n) {
int[][] t2 = new int[n][n];
boolean left = true;// true从左到右打印然后从上到下 false 从右到左 然后从下到上
int x = 0;// x轴
int y = 0;// y轴
for (int i = 1; n >= 0; n--) {// i是要打印的数字
if (left) {//
// 总共要打印的数量 2n-1
int t = (n << 1) - 1;
for (int j = 0; j < t; j++) {
if (j > 0)// 第一次不偏移
if (j > t / 2) {
// 从上往下偏移
y++;
} else {
// 从左往右偏移
x++;
}
t2[y][x] = i++;
}
x--;// 矫正头的位置(就是第一要打的)
left = !left;
} else {
int t = (n << 1) - 1;
for (int j = 0; j < t; j++) {
if (j > 0)
if (j > t / 2) {
// 从下往上
y--;
} else {
// 从右向左
x--;
}
t2[y][x] = i++;
}
x++;// 矫正打印位置
left = !left;
}
}
System.out.println();
for (int i = 0; i < t2.length; i++) {
for (int j = 0; j < t2[i].length; j++) {
System.out.printf("%4d", t2[i][j]);
}
System.out.println();
}
return t2;
}
这个是我自己写的,IQ有限勿喷 |