我的代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sca=new Scanner(System.in);
int len;
int n,t,l,r;
char [][] a;
n=sca.nextInt();
len=2*2*(n+1)+1;
a=new char[len][len];
//初始化
for(int i=0;i<len;i++)
for(int j=0;j<len;j++)
a[i][j]='.';
//填十字
t=2*(n+1);
l=t-2;
r=t+2;
for(int i=t-2;i<=t+2;i++)
for(int j=t-2;j<=t+2;j++)
if((i==t)||(j==t)) {
a[i][j]='$';
}
for(int k=1;k<=n;k++) {
for(int i=0;i<len;i++)
for(int j=0;j<len;j++) {
if(((i==r+2)||(i==l-2))&&(j>=l)&&(j<=r)) {
a[i][j]='$';
}
//这一部分可以直接指定a[][]为多少
else if(((j==l)||(j==r))&&((i==l-1)||(i==r+1))){
a[i][j]='$';
}
else if(((i==r)||(i==l))&&((j>=l-2)&&(j<=l)||((j>=r)&&(j<=r+2)))) {
a[i][j]='$';
}
else if(((j==l-2)||(j==r+2))&&((i>l)&&(i<r))) {
a[i][j]='$';
}
}
l-=2;
r+=2;
}
for(int i=0;i<len;i++) {
for(int j=0;j<len;j++) {
System.out.print(a[i][j]);
}
System.out.println();
}
}
}
分析:主要查找规律,可以一个先生成一个初始化的数组用来保存图形。
然后首先构造中心的十字。再根据输入的n来一个个生成环。
其中只得注意的是角上的图案对于一个一个的环是很容易找规律的,但是如果一排一排的找角的规律是很复杂。