嵌套循环模式不起作用

时间:2013-11-11 16:11:43

标签: java class for-loop

我写了一个类来打印模式:

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();
        }
    }
}

我发现rowval之间的关系是val = row*val。使用这个逻辑,我编写了嵌套循环。但是,我没有获得所需的输出,而是获得了无限1的输出。我很肯定我的问题在于第二个for循环的措辞,我可以帮助识别吗?

7 个答案:

答案 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();
        }
    }
}