回形数格式方阵
package com.atguigu.exer;
import java.util.Scanner;
public class Huixing{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
int len = scanner.nextInt();
int[][] arr = new int[len][len];//静态初始化数组
int k = 1;//k用来控制方向,1表示向右,2表示向下,3表示向左,4表示向上
int i = 0;//一级下标
int j = 0;//二级下标
for(int m = 1;m <= len * len;m++){//m控制循环次数
if(k == 1){//说明数组向右赋值
if(j < len && arr[i][j] == 0){//j<表示不超过数组本身的范围;arr[i][j] == 0表示未赋值;
arr[i][j] = m;
j++;
}else{//超出范围或已赋值
k = 2;//改变方向,向下赋值
j--;//超出范围回退
i++;//选择下一层
m--;//赋值未成功,回退
}
}else if(k == 2){//说明数组向下赋值
if (i < len && arr[i][j] == 0) {
arr[i][j] = m;
i++;
}else {
k = 3;
i--;
j--;
m--;
}
}else if(k == 3){
if(j >= 0 && arr[i][j] == 0){
arr[i][j] = m;
j--;
}else{
k = 4;
j++;
i--;
m--;
}
}else {//k==4
if(i >= 0 && arr[i][j] == 0){
arr[i][j] = m;
i--;
}else {
k = 1;
i++;
j++;
m--;
}
}
}
for(int x = 0;x < arr.length;x++){
for(int y = 0;y < arr[x].length;y++){
System.out.print(arr[x][y] + "\t");
}
System.out.println();
}
}
}

浙公网安备 33010602011771号