解题思路:定义二维数组找规律赋值
注意事项:
参考代码:
import java.util.Scanner;
public class Main {
public static void main(String []args){
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
scanner.close();
int m=5+n*4; //定义数组
char [][]a=new char[m+1][m+1];
for(int i=1;i<=m;i++){
for(int j=1;j<=m;j++){
a[i][j]='.';
}
}
a[(m+1)/2][(m+1)/2]='$'; //最初的十字赋值
a[(m+1)/2-1][(m+1)/2]='$';
a[(m+1)/2-2][(m+1)/2]='$';
a[(m+1)/2+1][(m+1)/2]='$';
a[(m+1)/2+2][(m+1)/2]='$';
a[(m+1)/2][(m+1)/2+1]='$';
a[(m+1)/2][(m+1)/2+2]='$';
a[(m+1)/2][(m+1)/2-1]='$';
a[(m+1)/2][(m+1)/2-2]='$';
while (n>0){ //n圈包围
int l=(m+1)/2-2-2*n; //上下左右 依次赋值
int r=(m+1)/2+2+2*n;
int u=(m+1)/2-2-2*n;
int d=(m+1)/2+2+2*n;
for(int i=(m+1)/2-2*n;i<=(m+1)/2+2*n;i++) {
a[i][l] = '$';
a[i][r] = '$';
a[u][i] = '$';
a[d][i] = '$';
}
a[u+2][l+1]=a[u+1][l+2]=a[u+1][r-2]=a[u+2][r-1]= //两条边连接角赋值
a[d-2][l+1]=a[d-1][l+2]=a[d-1][r-2]=a[d-2][r-1]=
a[u+2][l+2]=a[u+2][r-2]=a[d-2][l+2]=a[d-2][r-2]='$';
n--;
}
for(int i=1;i<=m;i++){
for(int j=1;j<=m;j++){
System.out.print(a[i][j]);
}
System.out.println();
}
}
}
0.0分
0 人评分