Java for 循环间隔结果

问题描述 投票:0回答:4

我正在 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 颗星线, (两个空格)三颗星线, (三个空格)2 颗星线, (四个空格)一星线

我说得有道理吗?

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

java for-loop spacing
4个回答
5
投票

您可以执行以下两项操作之一:

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

0
投票

您可以引入一个新的

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");
}

0
投票

请记住,如果你想要一个真正的金字塔,你必须跳过每 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");

     }

0
投票

代码::::

公共类 TestExample3 {

public static void main(String[] args) {
    int number = 9, n = 0 , n1 = 0 , n2 = number ;
    for(int i=1;i<=number;i++) {
        if(i<=(number/2)) {
            for(int k=(number/2);k>n1;k--) {
                System.out.print(" ");
            }n1++;
            for(int j=1;j<=(2*i-1);j++) {
                System.out.print("*");
            }
        }else{
            for(int k=n2;k<number;k++) {
                System.out.print(" ");
            } n2--;
            for(int p = number-2;p>=(2*n-1);p--) {
                System.out.print("*");
            }
            n++;
        }
        System.out.println();
    }
}

}

输出::::::

*







*
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.