0

do while ループを含むプログラムがあります。2 つの条件のいずれかが発生するかどうかをテストする必要があります。1 つ目は、currentPlayerEnergy が 0 に等しくないことです。2 つ目は、quit が true にならないことです。コードは次のとおりです。

do
{
        switch(answer)
        {
            case 'w':   System.out.println("Walk");
                        break;

            case 'b':   System.out.println("Buy");
                        break;

            case 'c':   System.out.println("Change Character");
                        break;

            case 'r':   currentPlayerEnergy = 0;
                        break;

            case 'q':   quit = true;
                        break;
        }


}
while ( (currentPlayerEnergy > 0) || (quit != true ) );

ケース「r」でcurrentPlayerEnergyがゼロになることをテストしているだけであることに注意してください。私は問題を理解しています。Java はテストを読み取り、現在のエネルギーがゼロでない場合はブロックを続行しますが、quit が true になったかどうかは確認しません。間違ったタイプのループを使用していませんか? 論理和の代わりに使用する必要がある他のオペランドはありますか? どうもありがとう。

4

2 に答える 2

8

論理和の代わりに使用する必要がある他の演算子[tor]はありますか?

はい、使用する正しい演算子は論理「AND」( &&) です。

while ( (currentPlayerEnergy > 0) && !quit );

私も に変更(quit != true)しまし!quitたが、この変更は純粋にスタイル上のものです。

于 2012-05-15T13:49:48.043 に答える
0

ここでプログラムに伝えていること:

 while ( (currentPlayerEnergy > 0) || (quit != true ) );

2 つのブール式のいずれかが true の場合は、その間にとどまります。

両方が false の場合のみ続行します。ロジックがaixが 言ったことを正確に実行する必要があります。

while ( (currentPlayerEnergy > 0) && !quit );

(!quit) は (quit != true) の短縮形に過ぎないことに注意してください。

于 2012-05-15T14:08:31.153 に答える