回形数格式方阵

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();
	}
}

}

posted @ 2022-04-29 18:34  古玩乐  阅读(107)  评论(0)    收藏  举报