我写了一个类来打印模式:
1
2 4
3 6 9
4 8 12 16
5 10 15 20 25
代码是:
public class pat2
{
public void method()
{
int row = 1;
int val = 0;
for(row=1;row<=5;row++)
{
for(val=1;val<=row;val=row*val)
{
System.out.print(val);
}
System.out.println();
}
}
}
我发现row
和val
之间的关系是val = row*val
。使用这个逻辑,我编写了嵌套循环。但是,我没有获得所需的输出,而是获得了无限1
的输出。我很肯定我的问题在于第二个for
循环的措辞,我可以帮助识别吗?
答案 0 :(得分:1)
您无法在增量阶段执行此操作val=row*val
。这将溢出所有预期的算法范围。
我相信这就是你想要的:
for(val=1;val<=row;val++)
{
System.out.print(val*row);
}
答案 1 :(得分:1)
您只需要将第二个循环替换为:
for(val = 1; val <= row; val++) {
System.out.print( val * row + "\t" );
}
答案 2 :(得分:1)
public class Pat2 { //class names start with a capital letter
public void method(){
for(int row = 1; row <= 5; row++){
for(int col = 1; col <= row; col++)
System.out.print(row*col + "\t");
System.out.println();
}
}
}
答案 3 :(得分:1)
在你的第二个for循环中,for(val = 1; val&lt; = row; val = row * val )。
val = row * val 使代码处于无限循环中,它不会结束。
您应该使用以下代码,例如
public void method() {
int row = 1;
int val = 0;
for (row = 1; row <= 5; row++) {
for (val = 1; val <= row; val++) {
System.out.printf("%2d ", row * val);
}
System.out.println();
}
}
控制台中的输出如下:
1
2 4
3 6 9
4 8 12 16
5 10 15 20 25
答案 4 :(得分:0)
你很亲密。你想要逐行递增你的内部循环,但你不想那么多地增加循环计数器。我将您的“val”变量重命名为“col”,我认为更清楚的是发生了什么:
public class pat2
{
public void method()
{
int row = 1;
int col = 1;
for(row=1;row<=5;row++)
{
for(col=1;col<=row;++col)
{
System.out.print(col*row);
}
System.out.println();
}
}
}
答案 5 :(得分:0)
所以你的问题是你说:
for(val=1;val<=row;val=row*val)
考虑一下你在这里说的话。
Val = 1.
只要val&lt; = row
val = row * val。
所以如果value =任何大于1的数字,这应该会中断。
试试这个:
public void method()
{
for(int row=1; row<=5; row++)
{
for(int val=1; val<=row; val++)
{
System.out.print(val * row);
}
System.out.println();
}
}
答案 6 :(得分:0)
在for循环中使用val=val*row
是对如何使用for循环的一个很大的误解。您希望循环计数器以一致的计数递增。如果您在纸上找出当前的解决方案,您将看到val始终为1.因此,它永远不会离开循环,并且它将始终打印出“1”
您可以修改代码:
public class pat2
{
public void method()
{
for(int row=1; row<=5; row++)
{
for(int column=1; column<=row; column++)
{
System.out.print(row * column);
}
System.out.println();
}
}
}