所有的空白位置都以句点符来代替。 要求输入两个整数m n,表示笔的宽度,X的高度。用空格分开
(0<m<n, 3<n<1000, 保证n是奇数) 要求输出一个大X
例如,用户输入: 3 9
程序应该输出:
***.....***
.***...***.
..***.***..
...*****...
....***....
...*****...
..***.***..
.***...***.
***.....***
再例如,用户输入:
4 21
程序应该出
****................****
.****..............****.
..****............****..
...****..........****...
....****........****....
.....****......****.....
......****....****......
.......****..****.......
........********........
.........******.........
..........****..........
.........******.........
........********........
.......****..****.......
......****....****......
.....****......****.....
....****........****....
...****..........****...
..****............****..
.****..............****.
****................****
注意:根据提议必须保证n为奇数
import java.util.Scanner;
public class Temp {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 星星的总数
int starNum = sc.nextInt();
// int starNum = 13;
// 大X的高度
int bigXHeight = sc.nextInt();
// int bigXHeight = 39;
// 大X的宽度
int width = starNum + bigXHeight - 1;
// 第一行初始点的总数
int pointNum = bigXHeight - starNum - 1;
// 对应偶数递减
int tempEvenStar = starNum * 2;
// 对应奇数递减
int tempOddStar = starNum * 2 - 1;
// 打印X的上半部分
for (int i = 0; i < bigXHeight / 2; i++) {
for (int j = 0; j < i; j++) {
System.out.print(".");
}
if (pointNum - i * 2 > 0) {
for (int j = 0; j < starNum; j++) {
System.out.print("*");
}
for (int j = 0; j < pointNum - i * 2; j++) {
System.out.print(".");
}
for (int j = 0; j < starNum; j++) {
System.out.print("*");
}
} else {
if (starNum % 2 == 0 && tempEvenStar >= starNum) {
for (int j = 0; j < tempEvenStar; j++) {
System.out.print("*");
}
tempEvenStar -= 2;
} else {
if (tempOddStar >= starNum) {
for (int j = 0; j < tempOddStar; j++) {
System.out.print("*");
}
tempOddStar -= 2;
}
}
}
for (int j = 0; j < i; j++) {
System.out.print(".");
}
System.out.println();
}
// int startPrintPoint=
int count = 0;
// 统计下半部分中间点总共有多少行
while (pointNum > 0) {
count++;
pointNum -= 2;
}
// 打印X的下半部分
for (int i = 0; i < bigXHeight / 2 + 1; i++) {
for (int j = 0; j < bigXHeight / 2 - i; j++) {
System.out.print(".");
}
if (i <= bigXHeight / 2 - count) {
for (int j = 0; j < starNum + i * 2; j++) {
System.out.print("*");
}
} else {
for (int j = 0; j < starNum; j++) {
System.out.print("*");
}
pointNum += 2;
for (int j = 0; j < pointNum; j++) {
System.out.print(".");
}
for (int j = 0; j < starNum; j++) {
System.out.print("*");
}
}
for (int j = 0; j < bigXHeight / 2 - i; j++) {
System.out.print(".");
}
System.out.println();
}
}
}