带while循环的java星形金字塔
我现在对制作一个星形金字塔感到困惑。 我的产品需要能够使用用户输入的行创建一个金字塔。如果我说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;
}
}
}
更新:我更新了很多次这个问题,并且已经收到了与之相关的答案。这个问题现在可以不提了吗?我不确定编辑这篇文章是否会通知任何人,但值得再试一次
# 1 楼答案
在代码中,用于打印空白的第一个内部循环总是运行
rowCounter / 2
次。这就是问题所在。理想情况下,它应该从该值开始,并在外循环的每次迭代中不断减小你可以有一个
spacesPerRow
变量,并在外循环外给它一个初始值rowCounter / 2
。然后在每次外循环迭代中,可以减少它。在第一个内部循环中使用这个spacesPerRow
来打印空格你的
spacesPerRow
应该在外循环的每次迭代中递减一次。一个理想的地方是在你的第一个内环完成后给版主&;质疑选民:
我不能添加评论,所以我将在这里添加我的想法。问题的前几行正好提到了这个问题:“我想做X,但我的代码在做Y”。而OP无法找出原因
我还相信代码也没有包含很多不必要的部分
我想知道为什么这被认为是离题,搁置,并有两个反对票