java矩陣螺旋逆時針輸出
思路->看成幾個圓形沿下右下左賦值 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();
}
}
執行結果