1

私は、ロックを解除するためにユーザーにロックの 3 つの数字を推測させる必要がある割り当てのプログラムを作成しています。彼らが 3 推測以内にそれを行うことができない場合、ゲーム オーバーです。十分に単純で、私が知る限り、私はそれを正しく行っているので、どこが間違っているのかわかりません. コードのセクションは次のとおりです。

do{
    try{
        String g1Str = JOptionPane.showInputDialog("Enter number 1:");
        g1 = Integer.parseInt(g1Str);
        looper = 2;
    }
    catch(NumberFormatException e){
        JOptionPane.showMessageDialog(null,"Not a Number");
        looper = 1;
    }
    if(g1!=num1){
        JOptionPane.showMessageDialog(null, "Incorrect guess, try again");
        lives = lives - 1;
        looper = 1;
    }
    else if(g1==num1){
        JOptionPane.showMessageDialog(null, "Correct!");
        looper = 2;
    }
}while(looper==1||lives!=0);

ここに私の考えがあります: ユーザーに数値を入力するように依頼し、文字列を整数に変換しようとします。ユーザーが実際に文字ではなく数字を入力したことを確認するために、try catch を使用します。その後、推測が実数と等しいかどうかを確認します。そうでない場合は、ライフを失い (以前はライフが 3 と宣言されていました)、ルーパーを 1 に設定して、十分なライフがあるかどうかを再試行して推測できるようにします。正しい場合、ルーパーは 2 に設定され、ループが中断され、その時点でユーザーは 2 番目の数字を推測できます。十分なライフがある限りループをアクティブのままにしたいので、"while" ステートメントをルーパーが 1 の場合、またはライフが 0 でない場合に設定します。命は0になります。よろしくお願いします

4

3 に答える 3

7

while ループのロジックを変更する必要があります。

while (looper == 1 && lives != 0)

現在、より多くのライフがあれば、ルーパーが何であれ、ループし続けます。

于 2013-04-02T14:53:53.580 に答える
1

次のように、&&OR ではなくブール値の AND が必要です。||

while(looper==1 && lives!=0);

||trueは、その引数のいずれかが true である場合に評価されるため、 isが何であるかに関係なく、looperisの場合、持っているものは続行されます。同様に、が に設定されていても、が でない場合、コードはループし続けます。1liveslives0looper2

&&trueは、両方の条件が true の場合にのみ評価され、 is notまたはisfalseの場合はループを終了して終了します。looper1lives0

于 2013-04-02T14:58:52.023 に答える
0

これを交換

if(g1!=num1){
      JOptionPane.showMessageDialog(null, "Incorrect guess, try again");
      lives = lives - 1;
      looper = 1;
   }

これで

if(g1!=num1){
   JOptionPane.showMessageDialog(null, "Incorrect guess, try again");
   lives = lives - 1;
   if(lives == 0)
   {
       looper = 2;
   }
   else
   {
       looper = 1;
   }

}

0にlives達するlooperと、まだ 1 に等しいため、ループが続行されます。

于 2013-04-02T14:56:31.653 に答える