在循环中创建数字模式

时间:2014-04-24 17:17:49

标签: java nested-loops bluej

模式应如下所示:

12345
22345
33345
44445
55555

我已经尝试过了:

 import java.io.*;
 class Pattern
 {
    void display() 
    {
        int i=0,k;
        for(i=1;i<=5;i++)
        {
             for(k=1;k<=5;k++)
             {
                 System.out.print(i+" ");
             }
             System.out.println();
        }
    }    
}

4 个答案:

答案 0 :(得分:1)

试试这个:

void display() 
{
    int i=0,k;
    for(i=1;i<=5;i++)
    {
         for(k=1;k<=5;k++)
         {
             if (k < i ) {
                 System.out.print(i);
             } else {
                 System.out.print(k);
             }
         }
         System.out.println();
    }
}

您的模式取决于行号i

  1. 第n行应打印n次,n次
  2. 使用从n开始的直线整数填充行的其余部分,直到行/最大行数。
  3. 您可以将其概括为使图案更具可读性:

    void display(int dimension) 
    {
        int lineNumber = 0, linePosition = 0;
        int numberOfLines = dimension, numberOfCharactersPerLine = dimension;
    
        for(lineNumber =1;lineNumber<=numberOfLines ; lineNumber++)
        {
             for(linePosition = 1;linePosition <= numberOfCharactersPerLine ;linePosition++)
             {
                 if ( linePosition < lineNumber ) {
                     System.out.print(lineNumber);
                 } else {
                     System.out.print(linePosition);
                 }
             }
             System.out.println();
        }
    }
    

    这里我们看到带有显式命名变量的指令。如果linePosition(我们决定打印的行中的当前字符)小于行号,我们应该打印行号,否则打印字符位置。

    通过将其描绘成带有坐标的二维矩阵,您可以更好地想象这一点,并根据这些坐标填充它。

答案 1 :(得分:1)

修改内循环。该模式可以很容易地归结为if语句。如果您的k小于i,则应该打印出来而不是k。所以你的循环总体看起来像这样:

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

除非你想在每个数字之间留出空格,否则不要打印i+" "之类的东西。

如果你将它们的类型放在循环线中,你也不需要在循环外声明变量i和k。这将在循环时声明它们,并防止它们在之后持续存在。虽然我猜你是否需要它们在被循环修改后继续存在,但这是一个很好的方法。

答案 2 :(得分:0)

对于初学者......如果你改变了这一行:

for(k=1;k<=5;k++)

对此:

for(k=1;k<=i;k++)

(在数字的开头得到重复的整数)

答案 3 :(得分:0)

void display() 
{
    int i,k;
    for(i=1;i<=5;i++)
    {
         for(k=1;k<=5;k++)
         {
             System.out.print(Math.max(i,k));
         }
         System.out.println();
    }
}