有 Java 编程相关的问题?

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

打印星星的“三角形”时出现java循环错误

我正在尝试使用嵌套循环打印下面的图片(我应该使用for&;while循环):

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

从5个空格开始,每行减少2个空格。 从2颗星开始,每行增加2颗星。 在4行结束

我的代码在第一行有效,但它不会在剩下的3行上打印星星。有人能看出错误是什么吗?请不要给出答案,我只是需要帮助理解逻辑错误

    int m = 6;
    int n = 0;

    for(int l = 1; l < 5; l++){

        while(m > 0){
            System.out.print(" ");
             m--;
        }
        while(n < (2*l)){
            System.out.print("*");
            n++;
        }
        System.out.println();
        m = 5 - (2*l);
        n = n + 2;
    }  

共 (2) 个答案

  1. # 1 楼答案

    使用嵌套循环外部循环沿行向下移动,内部循环沿列移动。每次通过内环时,都应检查是放置空白还是星号。这可以通过if语句来完成。使用for循环中的整数变量来确定何时放置空格或星号。根据您想要的形状,算法会有所不同

    或者,在这里使用双索引数组可能会很有趣。更复杂,但如果需要使用while循环,可能需要查看一些内容。可以使用for循环将双索引字符数组填充为“”或“*”,然后简单地打印出数组的ghe内容,同时在打印和检查数组是否为空后将值设置为null

    也许其中有些是有用的。快乐编码

  2. # 2 楼答案

    错误在于没有在每个循环中重置n变量。在第一个循环之后添加2,在该循环中,点已经大于2 * l,因此不会打印更多的星星

    将其组织为:

    for (int l = 0; l < 4; l ++) {
        for (int i = 0; i < 5 - 2l; i++) 
            System.out.print(" ");
        for (int i = 0; i < 2 + 2l; i++)
            System.out.print("*");
        System.out.println();
    }