【问题标题】:Java for loop spacing the resultJava for 循环间隔结果
【发布时间】:2013-11-01 02:11:53
【问题描述】:

我正在我的 Java 类中编写一个程序,我需要打印一个星形金字塔。我的代码如下:

    Scanner sc = new Scanner(System.in);
    System.out.print("Enter a number between 1 and 20: ");
    int value = sc.nextInt();
    System.out.println("Pattern B: ");
    for(int x = 1; x <= value; x++){
      for(int y = value; y>=x; y-- ){
           System.out.print("*");
     }
       System.out.print("\n");

      }

我的结果打印一行 5 星,然后是 4、3、2、1(如果用户输入数字 5)。 我想要的是让星星都被推到右边。如:

一行5星, (空间)4星线, (两个空格)3星线, (三个空格)2星线, (四个空格)一星一行

我说得有道理吗?

我应该引入一个 if then 语句,检查变量 y 并相应地增加空格吗?如果让您感到困惑,我很抱歉。

【问题讨论】:

  • 空格不计入任何循环。

标签: java for-loop spacing


【解决方案1】:

您可以做以下两件事之一:

  • x for 循环中引入另一个 for 循环,该循环将循环 x 次,到 print x 空格字符,或
  • 修改你的yfor循环以从1value运行,然后在其中添加一个if语句来决定是打印一个空格还是一个*

【讨论】:

    【解决方案2】:

    您可以引入一个新的for 循环,在打印星号之前打印所需数量的空格:

    Scanner sc = new Scanner(System.in);
    System.out.print("Enter a number between 1 and 20: ");
    int value = sc.nextInt();
    System.out.println("Pattern B: ");
    for(int x = 1; x <= value; x++){
        for(int c = value-x; c<value; c++){
            System.out.print(" ");
        }
        for(int y = value; y>=x; y-- ){
            System.out.print("*");
        }
        System.out.print("\n");
    }
    

    【讨论】:

      【解决方案3】:

      请记住,如果您想要一个真正的金字塔,您必须跳过每 2 个数字。例如,如果您选择 5,并决定为每个数字打印一行,直到 0,这是您能做的最好的事情:

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

      如果你跳过,你会得到这样的东西:

      *****
       ***
        *
      

      现在你只需要看看你离你的基地有多远就可以得到空格的数量,除以 2 就得到了你之前和之后的空格。

      你可以试试这样的:

          int spacing;
      
          for(int x = 0; x < value; x=x+2){
                for(int y = value; y>x; y-- ){
                     spacing = x/2;
      
                     for(int i = 0; i < spacing; ++i)
                        System.out.print(" ");
      
                     System.out.print("*");
      
                     for(int i = 0; i < spacing; ++i)
                        System.out.print(" ");
                 }
                 System.out.print("\n");
      
           }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-20
        • 1970-01-01
        • 2011-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多