【问题标题】:How can I print a certain string i times in a for loop?如何在 for 循环中打印某个字符串 i 次?
【发布时间】:2021-04-25 13:04:44
【问题描述】:

我正在尝试打印一个看起来像这样的形状:

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

为此,我使用了一个 for 循环:

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

但是如何让第 2 行打印 i 星号,而不是像我目前的那样只打印一个星号?

【问题讨论】:

  • 好吧,for 循环能够重复特定的次数。继续思考。
  • 一个提示,使用嵌套的for循环,即一个for循环在另一个for循环中。

标签: java string for-loop


【解决方案1】:

你可以使用

for (int i = 1; i <= 5; i++ ){
            System.out.println(new String(new char[i]).replace('\0', '*'));
}

根据每次循环时i包含的值打印*

它基本上创建了一个大小为i 的新字符数组,并用该字符数组的* 替换所有空值,即('\0'),然后将字符数组转换为一个字符串,然后打印出来。

【讨论】:

  • 为 OP 提供早期 cs 学生作业的答案并没有帮助。
  • 那么最简单的是参考@Tim Biegeleisen 的答案,但如果你分解我的答案,它只是通过一行完成的两个简单任务,创建了一个大小为 i 的 char 数组,替换了数组带*,将其转换为一个字符串
  • 我再说一遍。人们通过思考来学习,而不是通过复制(不是很好的)解决方案来学习。
  • 由于没有指定 Java 版本,我假设是最新版本并使用 "*".repeat(i) 而不是 new String(new char[i]).replace('\0', '*')。否则:StringBuilder s = new StringBuilder(); for (int i = 1; i &lt;= 5; i++) System.out.println(s.append("*")); 这个 new-array-then-replace-nul-with-char 技巧看起来很有创意,但没有真正的优势。另一种选择是String s = "*****"; for(int i = 1; i &lt;= 5; i++) System.out.println(s.substring(0, i));
【解决方案2】:

您要在此处阐明的逻辑是,对于每一行,打印与当前行号一样多的星号。这里可以使用嵌套循环:

for (int i=0; i < 5; i++) {       // the row
    for (int j=0; j <= i; ++j) {  // the column
        System.out.print("*");
    }
    System.out.println();
}

【讨论】:

    【解决方案3】:

    如果您使用的是 java 11 或更高版本,则可以使用 public String repeat​(int count)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多