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

... true に設定isRunningし、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

2 つの問題があります。

まず、while ループで比較演算子の代わりに代入演算子を使用します。

 while(isRunning=true)

次のようにする必要があります。

 while(isRunning==true)

SecondisRunningが false に設定されることはありません。

これら 2 つの問題により、無限ループが発生します。

于 2013-05-02T23:44:47.187 に答える