【问题标题】:Using a for loop to print a pattern in Java [closed]使用 for 循环在 Java 中打印模式 [关闭]
【发布时间】:2010-02-24 14:30:13
【问题描述】:

我正在尝试使用 Java 中的 for 循环打印出这种模式,但我有点卡住了。

zzzzz   
azzzz  
aazzz  
aaazz  
aaaaz  
aaaaa  

我可以打印:

 a  
 aa  
 aaa  
 aaaa  
 aaaaa  

使用:

String i = " ";   
int a = 0;  
for (i="a";i.length()<=5;i=i+"a")  
    System.out.println(i);

和

 zzzzz  
 zzzz  
 zzz  
 zz  
 z  

使用:

String i = " ";   
for (i="zzzzz";i.length()>0;i=i.substring(0,i.length()-1))  
    System.out.println(i); 

但我不知道如何组合它们。我正在考虑替换 i 的子字符串并将结束索引的值每次都增加一,但不确定是否对其进行编码。我从这样的事情开始:

String i = " ";  
String b = " ";  
for (i="zzzzz";i="aaaaa";i=i.replace(i.substring(0,))  
    System.out.println(i);  

有什么想法吗?

【问题讨论】:

    标签: java for-loop


    【解决方案1】:

    伪代码:

    for(i <- 0 to 5) {
      print( i times "a" followed by (5 - i) times "z")
      print a new line
    }
    

    现在用 Java 实现它。

    【讨论】:

    • G - 就像你在没有解决问题的情况下给他方向的方式
    【解决方案2】:

    您可以使用循环增加或减少多个变量

    for (int a = 0, z = 5; a <= 5 ; a++, z-- )
    {
      System.out.println(a+" "+z);
    }
    

    会输出

    0 5
    1 4
    2 3
    3 2
    4 1
    5 0
    

    【讨论】:

      【解决方案3】:

      在java中:

      public class Pattern {
      
          public static void main(String [] args) {
      
              for(int i=0;i<6;i++) { //This works out the number of lines
                  String line = "";
                      for(int a=0;a<i;a++) {
                          line+="a";
                      }
      
                      for(int z=0;z<(5-i);z++) {
                          line+="z";
                      }
      
                      System.out.println(line);       
              }
      
          }
      
      }
      

      【讨论】:

      • 对于大的i,这将是低效的,尽管因为你花费更少的时间阻塞I/O,它可能会变成一个非常大的i: )
      • @Chinmay Kanchi - 这对于这段特定的代码来说是极不可能的。
      • 两个优点。我确实认为写的海报会更容易理解。
      • @JonH:确实如此。只是觉得值得一提。
      【解决方案4】:
      Z = 5
      A = 0
      
      while ( Z >= 0 )
      {
        for ( i = 0; i < A; i++ ) print 'A';
        for ( i = 0; i < Z; i++ ) print 'Z';
        print newline;
        ++A;
        --Z;
      }
      

      是一种方式。

      【讨论】:

        【解决方案5】:
        String AA = "aaaaa";
        String ZZ = "zzzzz";
        
        for (int i = 0; i <= 5; i++) {
            System.out.println(AA.substring(i) + ZZ.substring(5 - i));
        }
        

        【讨论】:

          【解决方案6】:

          使用一个额外的变量来保持 a/z 边框的位置。在每次迭代中增加该变量的值。

          【讨论】:

            【解决方案7】:

            您可以尝试以下方法:

            public class pattern2
            {
                public static void main()
                {
                    int i,j,k,num=0;
                    for(i=1;i<=6;i++)
                    {
                        for(j=1;j<=num;j++)
                        System.out.print("a");
                        for(k=6;k>i;k--)
                            System.out.print("z");
                        System.out.println();
                        num++;
                    }
                }
            }
            

            【讨论】:

            • 非常糟糕的格式。 perfect answer!!!! 在那里做什么?
            • 下次注意缩进。请记住,您的解决方案必须对 OP 明确
            猜你喜欢
            • 2013-04-24
            • 1970-01-01
            • 2020-02-04
            • 2014-11-16
            • 2011-09-07
            • 1970-01-01
            • 2021-07-06
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多