小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:
对方同时也需要在电脑 dos 窗口中以字符的形式输出该标志,并能任意控制层数。
1
3
package data;
import java.util.Scanner;
public class Data728 {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();//输入打印图层的层数;
getPic(n);
}
public static void getPic(int x)//打印图层的函数
{
//一层--9;二层--13,一层一层推进$. .$;
int side = 5 + 4 *x;//正方形的长和宽的长度;
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<= x; 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();
}
}
}
原文:https://www.cnblogs.com/tmtboke/p/15073042.html