列印十字圖
問題描述
小明為某機構設計了一個十字型的徽标(并非紅十字會啊),如圖所示
. . $ $ $ $ $ $ $ $ $ $ $ $ $ . .
. . $ . . . . . . . . . . . $ . .
$ $ $ . $ $ $ $ $ $ $ $ $ . $ $ $
$ . . . $ . . . . . . . $ . . . $
$ . $ $ $ . $ $ $ $ $ . $ $ $ . $
$ . $ . . . $ . . . $ . . . $ . $
$ . $ . $ $ $ . $ . $ $ $ . $ . $
$ . $ . $ . . . $ . . . $ . $ . $
$ . $ . $ . $ $ $ $ $ . $ . $ . $
$ . $ . $ . . . $ . . . $ . $ . $
$ . $ . $ $ $ . $ . $ $ $ . $ . $
$ . $ . . . $ . . . $ . . . $ . $
$ . $ $ $ . $ $ $ $ $ . $ $ $ . $
$ . . . $ . . . . . . . $ . . . $
$ $ $ . $ $ $ $ $ $ $ $ $ . $ $ $
. . $ . . . . . . . . . . . $ . .
. . $ $ $ $ $ $ $ $ $ $ $ $ $ . .
同時對方也需要在電腦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();
}
}