有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带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) 个答案

  1. # 1 楼答案

    在代码中,用于打印空白的第一个内部循环总是运行rowCounter / 2次。这就是问题所在。理想情况下,它应该从该值开始,并在外循环的每次迭代中不断减小

    你可以有一个spacesPerRow变量,并在外循环外给它一个初始值rowCounter / 2。然后在每次外循环迭代中,可以减少它。在第一个内部循环中使用这个spacesPerRow来打印空格

    你的spacesPerRow应该在外循环的每次迭代中递减一次。一个理想的地方是在你的第一个内环完成后


    给版主&;质疑选民:

    我不能添加评论,所以我将在这里添加我的想法。问题的前几行正好提到了这个问题:“我想做X,但我的代码在做Y”。而OP无法找出原因

    我还相信代码也没有包含很多不必要的部分

    我想知道为什么这被认为是离题,搁置,并有两个反对票