【问题标题】:How to make a loop to print the following pattern?如何制作一个循环来打印以下模式?
【发布时间】:2015-01-27 11:45:07
【问题描述】:

我想编写一个程序,使用循环打印出以下模式。现在我只能使用system.out.println 来打印它。我不知道我应该做哪个循环。

模式将是:

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

我的代码:

  package pettern;

public class Pettern {

    public static void main(String[] args) {
        //initializing
        String tenStar = "* * * * * * * * * *";
        String NineStar = "* * * * * * * * *";
        String EightStar = "* * * * * * * *";
        String SevenStar = "* * * * * * *";
        String SixStar = "* * * * * *";
        String FiveStar = "* * * * *";

        //printing them out
        System.out.println(tenStar);
        System.out.println(NineStar);
        System.out.println(EightStar);
        System.out.println(SevenStar);
        System.out.println(SixStar);
        System.out.println(FiveStar);

    }

}

【问题讨论】:

标签: java string loops for-loop while-loop


【解决方案1】:

解决方案:

public static void printPattern(int rows) {
    IntStream.range(0, rows).map(r -> rows - r).forEach(x -> {
        IntStream.rangeClosed(1, rows + x - 2).forEach(y -> {
            System.out.print(" *");
        });
        System.out.println();
    });
}

用法:

printPattern(6);

输出:

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

【讨论】:

    【解决方案2】:

    您可以这样做,而无需使用两个循环:

    for (int i = 10; i >= 5; i--) {
        String stars = new String(new char[i]).replace("\0", "* ");
        System.out.println(stars);
    }
    

    输出:

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

    解释:这里发生的是使用chars 的指定数组创建String,这些数组都初始化为\0(空字符)。此时的字符串包含i 空字符。 .replace 将字符序列"\0" 替换为字符序列"* ",结果是由重复序列组成的String

    【讨论】:

    • 不过很好的答案。至少更容易记住。但有一件事:我不明白这里发生了什么: String stars = new String(new char[i]).replace("\0", "* ");
    【解决方案3】:

    试试这个:-

     public class Pattern
    {
    public static void main(String[] args)
    {
        int j=10 ;
        for(int i = 0 ; i < 6 ; i++)
        {
            printStar(j) ;
            System.out.println() ;
            j-- ;
    
        }
    
    
    
    
    }
    
    static void printStar(int n)
    {
        for(int i = 0 ; i < n ; i++)
    
        System.out.print("*") ;     
    
    }
    
    }
    

    【讨论】:

      【解决方案4】:

      试试这个:

      public static void main(String args[])
          {
              for (int i = 10; i >= 5; i--)
              {
                  printStars(i);
              }
      
          }
      
          private static void printStars(int i)
          {
              for (int j = 1; j <= i; j++)
              {
                  System.out.print("*");
              }
              System.out.println();
          }
      

      输出:

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

      【讨论】:

        【解决方案5】:

        5 &lt;= n &lt;= 10范围内循环,每次打印"* "n次。在循环结束时,打印一个换行符。

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

        (demo)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-09
          • 1970-01-01
          • 2022-01-01
          • 2022-06-11
          • 1970-01-01
          相关资源
          最近更新 更多