我目前对制作明星金字塔感到困惑。 我的产品需要能够使用用户输入的行数创建金字塔。所以,如果我说3,金字塔看起来像:
*
***
*****
当我输入3时,我的金字塔(基于我下面的代码)看起来像:
*
***
*****
我在连续排队时难以扣除空格。我似乎准确地准备了其他部分,所以我的问题是,如何在初始空格量之后将每个后续行的空格减去1?我可以获得有关如何修复代码的帮助吗?(使用while循环时)。如果它看起来不准确,请随意评论我的代码的任何其他部分。
目前这是我的代码:
import java.util.Scanner;
public class AstPyramid{
public static void main(String[] args){
Scanner keyboard = new Scanner(System.in);
System.out.println("How tall do you want your pyramid to be? Rows: ");
int rowCounter = keyboard.nextInt();
int baseLength = 1;
int starsInRow = 1;
while (baseLength <= rowCounter){
int starCounter = 1;
int whiteSpace = rowCounter/2;
while (whiteSpace >= 0){
System.out.print(" ");
whiteSpace--;
}
while (starCounter <= starsInRow){
System.out.print("*");
starCounter++;
}
System.out.println();
baseLength++;
starsInRow=starsInRow+2;
}
}
}
更新:我多次更新此问题,并且已经收到了与之相关的答案。这个问题现在可以解决吗?我不确定编辑这篇文章是否会通知任何人,但值得再试一次。
答案 0 :(得分:0)
在您的代码中,您用于打印空白区域的第一个内循环始终运行rowCounter / 2
次。那就是问题所在。理想情况下,它应从该值开始,并在外循环的每次迭代中保持递减。
您可以拥有spacesPerRow
变量,并在外部循环之外为其分配初始值rowCounter / 2
。然后在每个外循环迭代中,您可以减少它。并在第一个内部循环中使用此spacesPerRow
来打印空格。
对于外循环的每次迭代,您的spacesPerRow
应该递减一次。一个理想的地方就在你的第一个内循环结束后。
致版主&amp;问下来选民:
我无法添加评论,所以我会在这里添加我的想法。问题的前几行准确地提到了问题:&#34;我想做X,但我的代码正在做Y&#34;。 OP无法弄清楚原因。
我也相信代码也不包含许多不必要的部分。
我想知道为什么这被认为是偏离主题,被搁置,并且有两次低票。