印刷星形图案

时间:2019-08-05 08:01:12

标签: java loops

我正在尝试打印如下的星形图案

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

但是我得到了这个。

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

似乎与恒星的最后一行重复,而且我不知道为什么会这样。你能帮我吗?

这是我的代码:

public class Test1 {

    public static void main(String[] args) {

        for (int i = 1; i <= 5; i++) {
            System.out.println("*");
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
        }
    }
}

3 个答案:

答案 0 :(得分:2)

您将换行符放在错误的位置。我会将其与*的写作分开,例如

public class Test1 {

    public static void main(String[] args) {

        for (int i = 1; i <= 5; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

答案 1 :(得分:2)

您首先要打印一个*。它应该像您所做的那样完成。在For的1次完整迭代之后打印新行,如下所示:

代码:

for (int i = 1; i <= 5; i++) 
{
    //System.out.println("*");   // This line should not be here 
    for (int j = 1; j <= i; j++) 
    {
        System.out.print("*");
    }
    System.out.println();        // you can print new line after each nested-for compleletion
}

答案 2 :(得分:1)

简短回答(TL; DR)

您的换行符放置错误。在内部for循环执行后放置换行符,如下所示:

public class Test1 {

public static void main(String[] args) {

    for (int i = 1; i <= 5; i++) {
        for (int j = 1; j <= i; j++) {
            System.out.print("*");
        }
        System.out.println();
    }
  }
}


详细答案

首先,您必须了解System.out.print()System.out.println()之间的区别。这两个基本上具有相同的作用:它们打印出传递给它们的参数。。但是,有一个明显的区别:System.out.println()在打印后生成新的换行符,但是{{1 }} 才不是。要了解此概念,请检查以下示例代码:

System.out.print

其输出为:

  

Tadaa

     

Tadaa

     

Stackoverflow

使用此逻辑,很容易看出您出了错。直观地讲,[[System.out.println("Tadaa"); System.out.print("Ta"); System.out.print("daa"); System.out.print("Stackoverflow"); ]破损应该在每次迭代结束时发生。

我希望这会有所帮助。快活的编码!