【问题标题】:I have to print a series using for loop我必须使用 for 循环打印一个系列
【发布时间】:2015-03-31 10:40:37
【问题描述】:

这是系列:

12345

22345

33345

44445

我试图解决这个问题,但它不正确......

代码如下:

    class q14
  {
      public static void main ( )
         {
             int i,j,k;
             for (i=1;i<=5;i++)
                {
                    for (j=i;j<=5;j++)
                      {
                          for (k=1;k<=i;k++)
                             {
                                 System.out.print (i + " ");
                                }
                          System.out.print (j + " ");
                        }
                    System.out.println();
                }
            }
        }

【问题讨论】:

  • 这段代码是如何解决问题的?
  • 我想要正确的方式来打印这个系列
  • 没有所谓的正确的方法。有无数的程序可以产生这个序列。此外,给定的系列也是模棱两可的。
  • 老兄,我的代码输出错误我想知道如何使用 for 循环打印系列
  • 为了生成一个系列,老兄,你必须先告诉一个系列背后的规则...

标签: java loops


【解决方案1】:

下面的块应该生成你描述的系列。

int numberOfLines = 4;
int numberOfDigitsPerLine = 5;

for (int i=1; i<numberOfLines+1; i++){
    for(int j=1; j<=numberOfDigitsPerLine; j++) {
        if(j>=i) {
            System.out.print(j);
        } else {
            System.out.print(i);
        }
    }
    System.out.println();
}

根据需要更改 numberOfLinesnumberOfDigitsPerLine

阐述:

首先您必须分析系列,从外观上看,第一个数字以 1 开头并继续 5 位,第二行沿 5 位以及之前的 5 位,但它将第一个数字替换为 2 .

向下移动数字,我们可以看到一个模式,其中第 N 个数字将有 N 个 N 位数,然后是连续的数字,直到数字 5。

所以在我上面的代码中,我选择 max N 为 4,正如你所描述的那样,数字上升到 5,这些分别由变量 numberOfLinesnumberOfDigitsPerLine 表示。

块本身检查此时的 N 是什么(在我的块中它由 i 表示)然后继续向最大数 5 前进,这是在 j for 循环中完成的。如果 j 大于或等于 N,那么我们打印 j,否则我们还没有打印完所有的 N,所以我们打印 N。

【讨论】:

  • 好的,我现在明白了... 好逻辑!谢谢!
【解决方案2】:

这里是:

for (int i = 1; i <= 5; i++)
        {
            for(int k = 1; k <= i;k++) 
                System.out.print(i);
            for (int j = i + 1; j <= 5; j++)
                System.out.print(j);
            System.out.print("\n");
        }

【讨论】:

    【解决方案3】:

    您的系列不需要第三个循环

    for (int j=1;j<=5;j++) {
    
           for (int k=1;k<=5;k++){   
                        if(k<=j)
                           System.out.print (j + " ");
                           else
                           System.out.print (k + " ");
                     }
    
           System.out.println();
      }
    

    输出

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

    Demo

    【讨论】:

      【解决方案4】:

      试试这个:

       for(int i=1;i<=4;i++)
          {
              for(int j = 1; j<=5;j++)
              {
                  if(i>j)
                  {
                      for(int x= 1 ; x<=i;x++)
                     {
                         System.out.print(i);
                         j++;
                     }   
                  }                
                  System.out.print(j);
              }
              System.out.println("\n");
          }
      

      【讨论】:

        猜你喜欢
        • 2019-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多