有用户输入两个数值,分别是这个 X 的高度和宽度,编写程序可以打印出符合输入数值的 X 。
static void f(int h, int w) {
System.out.println(String.format("高度=%d, 笔宽=%d", h, w));
int a1 = 0;
int a2 = h - 1;
for (int k = 0; k < h; k++) {
int p = Math.min(a1, a2);
int q = Math.max(a1 + w, a2 + w);
for (int i = 0; i < p; i++)
System.out.print(" ");
if (q - p < w * 2) {
for (int i = 0; i < q - p; i++)
System.out.println("*");
; // 填空
} else {
for (int i = 0; i < w; i++)
System.out.print("*");
for (int i = 0; i < q - p - w * 2; i++)
System.out.print(" ");
for (int i = 0; i < w; i++)
System.out.print("*");
}
System.out.println();
a1++;
a2--;
}
}
public static void main(String[] args) {
f(15, 3);
f(8, 5);
}
此题有多个解法,上述方法是逐行打印法,就是一行一行的打印出这个大写的 X 形状,将整个图形拆分成一行,然后按照公式进行打印该有的 “ ” 或 “*” 。