对于读过这篇文章的人,我感谢你花时间这样做。
基本上我试图通过调用x数量的方法来生成这个精确的ASCII艺术,我个人想3个:
* *
** **
*** ***
**** ****
***** *****
************
***** *****
**** ****
*** ***
** **
* *
第一个是生成上部,第二个是生成中间部分,第三个是生成星号的最后一部分。
我目前只用一种方法处理绘图,我需要帮助将其分成多个部分。
此粘贴框链接具有我当前的进度。
谢谢。我非常感激。
答案 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));