模式应如下所示:
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();
}
}
}
答案 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
:
您可以将其概括为使图案更具可读性:
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();
}
}