/*
需求:打印如下图形
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
思路:1,分析矩形,得出数据输出的规律
规律是先从左往右输出,然后从上往下,从右往左,从下往上
根据矩形的边长进行循环
将整个矩形的数据用一个二维数组来进行存储
2,分析第一次循环:
A:从左往右
行不变,列变
B: 从上往下
行变,列不变
c:从右往左
行不变,列变
D:从下往上
行变,列不变
*/
import java.util.Scanner;
class Juxing
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("请输入矩形的边长:");
int size = sc.nextInt();
int[][] arr = new int[size][size];
int n = size;
int m = (n+1)/2;
int k = 0;
int i,j;
for(i=0;i<m;i++){//外循环控制循环的轮数
for(j=i;j<=n-i-1;j++){
arr[i][j] = ++k;//从左往右输出数据
}
for(j=i+1;j<=n-i-1;j++){
arr[j][n-i-1] = ++k;//从上到下输出数据
}
for(j=n-i-2;j>=i;j--){//从右往左输出数据
arr[n-i-1][j] = ++k;
}
for(j=n-i-2;j>=i+1;j--){//从下往上输出数据
arr[j][i] = ++k;
}
}
//打印二维数组
for(i=0;i<n;i++){
for(j=0;j<n;j++){
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
}
|
|