调用方法生成ASCII艺术

时间:2018-03-12 02:09:00

标签: java loops methods

对于读过这篇文章的人,我感谢你花时间这样做。

基本上我试图通过调用x数量的方法来生成这个精确的ASCII艺术,我个人想3个

*          *
**        **
***      ***
****    ****
*****  *****
************
*****  *****
****    ****
***      ***
**        **
*          *

第一个是生成上部,第二个是生成中间部分,第三个是生成星号的最后一部分。

我目前只用一种方法处理绘图,我需要帮助将其分成多个部分。

https://pastebin.com/RDE2KLHk

此粘贴框链接具有我当前的进度。

谢谢。我非常感激。

1 个答案:

答案 0 :(得分:1)

您是否了解过参数?基本上,您有一个方法可以调用以绘制整个图像。图像可以分为两部分,上半部分和下半部分。您不需要中间部分,因为它可以在上半部分或下半部分的环路中覆盖。如果你想要一个方法绘制中间,你可以自己编写并调整for循环。

public static void main(String[] args) {
    // pass in the height of the triangles
    // in your example it's 6
    printImage(6);
}

public static void printImage(int height) {
    printTop(height);
    printBottom(height);
}

//also draws the middle part
public static void printBottom(int height) {
    for (int i = height; i > 0; i--) {
        printStar(i);
        printSpace(2 * (height - i));
        printStar(i);
        System.out.println();
    }
}

public static void printTop(int height) {
    for (int i = 1; i < height; i++) {
        printStar(i);
        printSpace(2 * (height - i));
        printStar(i);
        System.out.println();
    }
}

public static void printStar(int stars) {
    for (int i = 0; i < stars; i++) {
        System.out.print("*");
    }
}

public static void printSpace(int spaces) {
    for (int i = 0; i < spaces; i++) {
        System.out.print(" ");
    }
}

您的方法也可以使用多个参数。请注意,printTop和printBottom具有基本相同的代码。这是不好的。为了减少冗余,我们可以编写另一种方法。

public static void printLine(int stars, int spaces) {
    printStar(i);
    printSpace(spaces);
    printSTar(i);
}

然后,在printTop和printBottom方法中,您可以像这样调用它:

printLine(i, 2 * (height - i));