for(;;)循环使我的applet无法使用

时间:2013-05-02 23:42:37

标签: java loops for-loop applet hang

这是我的循环类:

public class Timer {

private Timer timer;
private static boolean isRunning = true;

public static void gameLoop()
{
    while(isRunning) //the loop
    {
        try {
            Main.cash--;
            Thread.sleep(2000);
        } catch (InterruptedException e) {              
            // e.printStackTrace();
        } 
    }
}
}

当我运行applet时,我得到一个白色屏幕,我无法关闭applet,我必须在eclipse中使用terminate按钮。

3 个答案:

答案 0 :(得分:4)

while(isRunning=true) //the loop

...将isRunning设置为true,然后返回true(无论isRunning的先前值是什么),因此始终执行if语句。单个=是一个赋值,在这种情况下几乎肯定不是你想要做的。

您想使用==代替:

while(isRunning==true) //the loop

或者,更简洁(也最好是!)简单地说:

while(isRunning) //the loop

我假设代码中的其他位置isRunning将被设置为false,因为这里没有任何内容将其设置为false。

答案 1 :(得分:4)

在while循环中,您尝试将布尔值与=进行比较,但这是赋值运算符。它始终是true,这会导致无限循环。

使用==比较布尔值。

或者更好,只需使用while (isRunning)

答案 2 :(得分:0)

有两个问题。

首先使用赋值运算符而不是while循环中的比较运算符。

 while(isRunning=true)

应该是:

 while(isRunning==true)

第二个isRunning永远不会设置为false。

这两个问题导致无限循环。