打印十字图
问题描述
小明为某机构设计了一个十字型的徽标(并非红十字会啊),如图所示
. . $ $ $ $ $ $ $ $ $ $ $ $ $ . .
. . $ . . . . . . . . . . . $ . .
$ $ $ . $ $ $ $ $ $ $ $ $ . $ $ $
$ . . . $ . . . . . . . $ . . . $
$ . $ $ $ . $ $ $ $ $ . $ $ $ . $
$ . $ . . . $ . . . $ . . . $ . $
$ . $ . $ $ $ . $ . $ $ $ . $ . $
$ . $ . $ . . . $ . . . $ . $ . $
$ . $ . $ . $ $ $ $ $ . $ . $ . $
$ . $ . $ . . . $ . . . $ . $ . $
$ . $ . $ $ $ . $ . $ $ $ . $ . $
$ . $ . . . $ . . . $ . . . $ . $
$ . $ $ $ . $ $ $ $ $ . $ $ $ . $
$ . . . $ . . . . . . . $ . . . $
$ $ $ . $ $ $ $ $ $ $ $ $ . $ $ $
. . $ . . . . . . . . . . . $ . .
. . $ $ $ $ $ $ $ $ $ $ $ $ $ . .
同时对方也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。
输入格式
一个正整数n(n < 30)表示要求打印图形的层数。
输出格式
对应包围层数的该标志
样例输入1
样例输出1
. . $ $ $ $ $ . .
. . $ . . . $ . .
$ $ $ . $ . $ $ $
$ . . . $ . . . $
$ . $ $ $ $ $ . $
$ . . . $ . . . $
$ $ $ . $ . $ $ $
. . $ . . . $ . .
. . $ $ $ $ $ . .
样例输入2
样例输出2
. . $ $ $ $ $ $ $ $ $ $ $ $ $ . .
. . $ . . . . . . . . . . . $ . .
$ $ $ . $ $ $ $ $ $ $ $ $ . $ $ $
$ . . . $ . . . . . . . $ . . . $
$ . $ $ $ . $ $ $ $ $ . $ $ $ . $
$ . $ . . . $ . . . $ . . . $ . $
$ . $ . $ $ $ . $ . $ $ $ . $ . $
$ . $ . $ . . . $ . . . $ . $ . $
$ . $ . $ . $ $ $ $ $ . $ . $ . $
$ . $ . $ . . . $ . . . $ . $ . $
$ . $ . $ $ $ . $ . $ $ $ . $ . $
$ . $ . . . $ . . . $ . . . $ . $
$ . $ $ $ . $ $ $ $ $ . $ $ $ . $
$ . . . $ . . . . . . . $ . . . $
$ $ $ . $ $ $ $ $ $ $ $ $ . $ $ $
. . $ . . . . . . . . . . . $ . .
. . $ $ $ $ $ $ $ $ $ $ $ $ $ . .
思路
代码
package daily;
import java.util.Scanner;
public class d7_28 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
getPic(n);
}
public static void getPic(int a){
int side = 5 + 4 * a;//正方形长和宽的长度
int mid = side/2;//中间数据
char[][] arr=new char[side][side];
for(int i = 0;i < side;i++) {//初始化图形,图形均为'.'
for (int j = 0; j < side; j++) {
arr[i][j] = '.';
}
}
for (int i = mid - 2;i <= mid+2;i++){//打印中心十字
arr[mid][i]='$';
arr[i][mid]='$';
}
for (int i = 1;i <= a;i++){
for (int j = mid - 2 * i;j <= mid + 2 * i;j++){
arr[mid - 2 * (i + 1)][j] = '$';//上边行
arr[mid + 2 * (i + 1)][j] = '$';//下边行
arr[j][mid - 2 * (i + 1)] = '$';//左边竖
arr[j][mid + 2 * (i + 1)] = '$';//右边竖
}
//四个转角
//左上
arr[mid - 2 * i][mid - 2 * i] = '$';
arr[mid - 2 * i][mid - 2 * i - 1] = '$';
arr[mid - 2 * i - 1][mid - 2 * i] = '$';
//左下
arr[mid + 2 * i][mid - 2 * i] = '$';
arr[mid + 2 * i][mid - 2 * i - 1] = '$';
arr[mid + 2 * i + 1][mid - 2 * i] = '$';
//右上
arr[mid - 2 * i][mid + 2 * i] = '$';
arr[mid - 2 * i][mid + 2 * i + 1] = '$';
arr[mid - 2 * i - 1][mid + 2 * i] = '$';
//右下
arr[mid + 2 * i][mid + 2 * i] = '$';
arr[mid + 2 * i][mid + 2 * i + 1] = '$';
arr[mid + 2 * i + 1][mid + 2 * i] = '$';
}
for (int i = 0;i < side;i++){
for (int j = 0;j < side;j++){
System.out.print(arr[i][j]);
}
System.out.println();
}
}