输入一个数字k,得到一个k*k的二维数组,实现转圈数字的效果
效果如图:
注意:奇数和偶数的情况不一样,奇数最大的数在最中间,偶数不在
代码如下:
package 转圈数字;
import java.util.Scanner;
public class kkk {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int k = scanner.nextInt(), n = 0;
int[][] arryk = new int[k][k];
int t = k,h = 0,l = -1;
while (true) {
//往右走
while (true) {
n++;
l++;
arryk[h][l] = n;
if (l == t-1) {
break;
}
}
//判读结尾
if (n == k * k) {
break;
}
//往下走
while (true) {
n++;
h++;
arryk[h][l] = n;
if (h == t-1) {
break;
}
}
//往左走
while (true) {
n++;
l--;
arryk[h][l] = n;
if (l == k - t) {
break;
}
}
if (n == k * k) {
break;
}
//往上走
while (true) {
n++;
h--;
arryk[h][l] = n;
if (h == k - t+1 ) {
break;
}
}
t--;
}
scanner.close();
for (int i = 0; i < k; i++) {
for (int p = 0; p < k; p++) {
System.out.printf("%-4d",arryk[i][p]);
}
System.out.println();
}
}
}