思路->看成几个圆形沿下右下左赋值 n=4 ->2个圆 n=5 ->3个圆
思路要清晰,容易出错
源代码
package com.yl.sf;
import java.util.Scanner;
//逆螺旋
public class Test3 {
Test3() {
Scanner sc = new Scanner(System.in);
System.out.println("逆转螺旋:");
System.out.println("请输入数字");
int t = sc.nextInt();
test(t);
}
private void test(int n) {
int array[][] = new int[n][n];
int intA = 1; // 初始化
// n==4
int time = 0;
if (n / 2 == 0) {
time = n / 2;
} else {
time = n / 2 + 1;
}
for (int i = 0; i < time; i++) {
// 从上到下
for (int j = i; j < n - i; j++) {
array[j][i] = intA++; // x-y
}
// 从左到右
for (int k = i + 1; k < n - i; k++) {
array[n - i - 1][k] = intA++;
}
// 从下到上
for (int l = n - 2 - i; l >= i; l--) { // 2 2 2 1
array[l][n - i - 1] = intA++;
}
// 从右到左 最右有坑 最左有坑 所以-2 +1
for (int m = n - i - 2; m >= i + 1; m--) {
array[i][m] = intA++; // 4 0 3 0 2 0 1 0
}
}
print(array);
}
//打印
private void print(int n[][]) {
for (int i = 0; i < n.length; i++) {
for (int j = 0; j < n[i].length; j++) {
System.out.print(n[i][j] + "\t");
}
System.out.println();
}
}
public static void main(String[] args) {
new Test3();
}
}
运行结果