1、问题描述
小明希望用星号拼凑,打印出一个大X,他要求能够控制笔画的宽度和整个字的高度。
为了便于比对空格,所有的空白位置都以句点符来代替。
要求输入两个整数m n,表示笔的宽度,X的高度。用空格分开(0<m<n, 3<n<1000, 保证n是奇数)
要求输出一个大X
例如,用户输入:
3 7
程序应该输出:
***.....***
.***...***.
..***.***..
...*****...
....***....
...*****...
..***.***..
.***...***.
***.....***
2、代码实现
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//*的个数
int m = scanner.nextInt();
//行数
int n = scanner.nextInt();
int height = n;
int width = m + (n / 2) * 2;
char[][] map = new char[height][width];
//全部填充为. 后面只需要把部分改为*即可
for(int i = 0;i < height;i++) {
for(int j = 0;j < width;j++) {
map[i][j] = '.';
}
}
//左上角到右下角
for(int i = 0;i < height;i++) {
//每一行的打印m个*,从第i个开始
for(int j = 0;j < m;j++) {
map[i][j + i] = '*';
}
}
//右上角到左下角
for(int i = 0;i < height;i++) {
//每一行打印m个*,从width - 1 - i开始
for(int j = 0;j < m;j++) {
map[i][width - 1 - i - j] = '*';
}
}
//遍历
for(int i = 0;i < height;i++) {
for(int j = 0;j < width;j++) {
System.out.print(map[i][j]);
}
System.out.println();
}
}
}