1

这是我的循环类:

公共类定时器{

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

当我运行小程序时,我得到一个白屏,并且我无法关闭小程序,我必须使用 Eclipse 中的终止按钮。

4

3 回答 3

4
while(isRunning=true) //the loop

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

你想使用 == 代替:

while(isRunning==true) //the loop

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

while(isRunning) //the loop

我假设这isRunning将在您的代码中的其他地方设置为 false,因为这里没有任何东西将其设置为 false。

于 2013-05-02T23:43:38.233 回答
4

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

用于==比较布尔值。

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

于 2013-05-02T23:43:50.930 回答
0

有两个问题。

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

 while(isRunning=true)

应该:

 while(isRunning==true)

SecondisRunning永远不会设置为 false。

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

于 2013-05-02T23:44:47.187 回答