【问题标题】:Java: Printing triangles and spaces by calling methodsJava:通过调用方法打印三角形和空格
【发布时间】:2020-03-26 23:04:19
【问题描述】:

我被这个问题困住了:

打印星星和空格

定义一个名为 printSpaces(int number) 的方法,它产生 number 指定的空格数。该方法不打印 换行。

您还必须复制之前的 printStars 方法 在这个练习模板中回答或重新实现它。打印一个 右倾三角形

创建一个名为 printTriangle(int size) 的方法,该方法使用 printSpaces 和 printStars 打印正确的三角形。所以方法调用 printTriangle(4) 应该打印以下内容:示例输出

>    *
>   **
>  ***
> ****

我无法在第一个问题上使用空格,并且在制作递归三角形时完全迷失了方向。我看到很多答案都在使用 for 循环,但是我正在工作的课程希望它们作为方法完成。我无法理解如何正确翻译。我得到了相反的三角形:

public class Test072 {

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


    public static void printTriangle(int size) {
        int numSize = 0;
        while (numSize < size) {
            printStars(numSize);
            numSize++;
        }
    }

    public static void printStars(int number) {
        int numStar = 0;
        while (numStar <= number) {
            System.out.print("*");
            numStar++;
        }
        System.out.println();
    }
}

一旦我们开始添加空格,我就完全迷失了,不知道如何调用什么以及何时调用。我不知道如何正确地将空间方法调用为三角形方法。

【问题讨论】:

    标签: java methods


    【解决方案1】:

    这应该可以完成工作。

    public static void printTriangle(int size) {
        int numSize = 0;
        while (numSize < size) {
            printSpaces(size - numSize - 1);
            printStars(numSize);
            numSize++;
        }
    }
    public static void printSpaces(int number) {
        int numSpaces = 0;
        while (numSpaces < number) {
            System.out.print(" ");
            numSpaces++;
        }
    }
        public static void printStars(int number) {
            int numStar = 0;
            while (numStar <= number) {
                System.out.print("*");
                numStar++;
            }
            System.out.println();
        }
    }
    

    【讨论】:

    • 我无法理解的是你是如何让 printTriangle 部分工作的。您能否简要介绍一下从 printSpaces 到 numSize++ 发生了什么?
    • 方法 printSpaces 只打印指定次数的空格。这只是一个简单的while循环,所以我认为你不需要任何关于它内部工作原理的解释,所以我将直接进入 printTriangle 方法。正如您在示例输出中看到的那样,第一行始终有 1 个星和 3 个空格,第二行有 2 个星和 2 个空格,第三行有 3 个星和 1 个空格,最后(第四)行有 0 个空格和 4 个空格星星。也就是说,当我们调用 printSpaces 方法时,我们将 (size - numSize - 1) 作为参数传递。那么我们就一步步跟着printTriangle方法调用吧。
    • 最初一个 numSize 变量的值为 0,我们调用 printSpaces(4(从 main 方法传递的参数)- 0 - 1) = printSpaces(3)。这就是我们想要的,3 个空格。然后我们有 printSpaces(2)、printSpaces(1) 和 printSpaces(0)。我希望你明白:)
    • @farmac:下次,将解释放在答案中,而不是放在 cmets 中。很好地解释了您的代码。
    【解决方案2】:
    //printStars is printing "number" numbers of stars on one line with a line break
    
    public static void printStars(int number) {
        for(int i=1;i<=number;i++){
            System.out.print("*");
        }
        System.out.println();
    }
    
    //printSpaces print "number" number of spaces on one line
    public static void printSpaces(int number) {
    
        for(int i=1;i<=number;i++){
            System.out.print(" ");
        }
    }
    
    public static void printTriangle(int size) {
    
        for(int i=1;i<=size;i++){
            printSpaces(size-i);
            printStars(i);
        }
    }
    

    【讨论】:

    • 仅代码的答案很棒。能不能加个cmets来解释一下代码是干什么的?
    猜你喜欢
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多