我不能把我的头缠绕在“用火柴人画一些楼梯”的程序上

2022-09-01 15:46:55

您可能以前在Java 1类中见过它:这是一个问题,要求您编写一个绘制下图的程序:

enter image description here

我必须使用一个常量。除了 for 循环、和 之外,我不允许使用任何东西。没有参数,没有数组。我知道我如何用参数和数组来做到这一点,幸运的是。任何帮助是值得赞赏的!printprintln

这是我不完整的代码:

public class Stairs {
    public static final int LENGTH=5;

    public static void main(String[] args) {
        printStairs();
    }

    public static void printStairs() {
        for (int allStairs=1; allStairs<=15; allStairs++) {
            for (int spaces=1; spaces<=(-5*allStairs+30); spaces++) {
                System.out.print(" ");
            }
            for (int stair = 1; stair <= 5; stair++) {
                System.out.println("  o  *******");

            }
        }
    }
}

答案 1

这听起来像是一个家庭作业问题,所以我不只是想给你答案,而是尝试将其分解为步骤。想想你所知道的事情:

1)每个火柴人都有这个形状:

  o  ******
 /|\ *     
 / \ *     

2)您可以使用以下代码将其打印出来:

System.out.println("  o  ******");
System.out.println(" /|\ *     ");
System.out.println(" / \ *     ");

3)您可以使用循环打印多个:

for (int stair = 1; stair <= LENGTH; stair++) {
    System.out.println("  o  ******");
    System.out.println(" /|\ *     ");
    System.out.println(" / \ *     ");
}

想想这会给你什么样的输出,以及需要改变什么。意识到每个火柴人都需要缩进一定量。弄清楚如何根据 的值适当地缩进它们。stair


答案 2

您可以查看该图,并观察到每个火柴人每行有3行:

  • 如有必要,空格与火柴的数量成比例
  • 火柴人的一部分 - 你可以硬编码这个
  • 平坦的表面为 6,或 1 后跟 5 个空格**
  • 如有必要,空格与火柴的数量成比例
  • 一个*

最后,最后一行与火柴人的数量成正比。*