使用嵌套的while循环打印星星金字塔

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

我正在尝试使用嵌套 while 循环打印星星金字塔。我知道我可以使用 for 循环来实现这一点,但我想用 while 循环来实现。到目前为止,这是我的代码:

public class WhileNest
{
    public static void main(String[]args)
    {
        int rows = 5, i = 1, j = 1;

        while(i <= rows)
        {
            while(j <= i)
            {
                System.out.print("*");
                j++;

            }
            System.out.print("\n");
            i++;

        }
    }
}

输出必须是这样的:

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

但是我的输出是这样的:

*
*
*
*
*

如有任何帮助,我们将不胜感激,谢谢。

java loops while-loop nested-loops jcreator
6个回答
0
投票

你必须像这样重置j:

public class test {
    public static void main(String[] args) {
        int rows = 5, i = 1, j = 1;

        while (i <= rows) {
            while (j <= i) {
                System.out.print("*");
                j++;

            }
            System.out.print("\n");
            i++;
            j = 1;
        }
    }
}

0
投票

您忘记在外部 while 循环末尾将 1 赋给 j。

public class WhileNest {

    public static void main(String[] args) {
        int rows = 5, i = 1, j = 1;

        while (i <= rows) {
            while (j <= i) {
                System.out.print("*");
                j++;
            }
            System.out.print("\n");
            i++;
            j = 1;
        }
    }
}

0
投票
int rows = 5, i = 1, j = 1;

    while(i <= rows)
    {
        while(j <= i)
        {
            System.out.print("*");
            j++;
        }
        j=1;
        System.out.println();
        i++;
    }

您不会重新分配

j
从头开始。你的
i
j
始终保持不变。如图所示,在内部 while 循环之后将
j
重新初始化为 1。会起作用的


0
投票

使用两个 for 循环的金字塔:

String STAR = "*";
    String SPACE = " ";
    int SIZE = 10;
    for(int i=0;i<SIZE;i++) {
        int start = SIZE-i;
        int end = (SIZE*2) - SIZE + i;
        for(int j = 0; j<SIZE*2; j++) {
            if(j>=start && j<=end && j%2 == i%2) {
                System.out.print(STAR);
            } else {
                System.out.print(SPACE);
            }
        }
        System.out.println();
    }

输出:

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

0
投票
public static void main(String[] args) {
    
    for(int i=0;i<10;i++){
        for(int k=0;k<i;k++){
            System.out.print("*");
        }
        System.out.println();
    }
}

0
投票

*不要在开头初始化“j”,而是将其包含在第一个 while 循环中来完成这项工作。(* 将打印在每行的开头)

public class WhileNest
{
    public static void main(String[]args)
    {
        int rows = 5, i = 1;

        while(i <= rows)
        {
            int j = 1;
            while(j <= i)
            {
                System.out.print("*");
                j++;
            }
            System.out.print("\n");
            i++;

        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.