2016-12-03 6 views
-3

whileループとifステートメントで作業しています。whileループを取得してifステートメントを続ける

else文が実行されている場合は、ループを続行します。私の理解では、 "続ける"ループを再起動する必要がありますが、ループは再起動しません。

これを修正するための回避策が1つ見つかりました。「cho = 1;」を設定します。しかし、これは本当に必要ですか?この問題を解決するための論理的な方法はありますか?

ありがとうございます!

while (sum < 21 && cho == 1 && sum != 21) { 
     System.out.println("Do you want to (1)hit or (2) stay?"); 
     cho = scan.nextInt(); 

     if (cho == 1) { 

      getCard(index++); 

      if (sum > 21) { 
       System.out.println("You busted! Dealer wins."); 
       return; 
      } 
     } else if (cho == 2) { 
      System.out.println("Your value is " + sum); 
      sum = playerTotal; 
     } 
     else{ 
      cho = 1; 
      System.err.println("The input value given is not a valid integer"); 
      continue; //Does not restart the loop. 
     } 
    } 
+1

「動作しません」と定義します。デバッガでこれを実行すると、何が行われますか? 'continue'オペレーションは、あなたが何を記述しているのか正確に行います。そして、' continue'キーワードが「動作しません」よりも論理エラーを起こした可能性が高くなります。 – David

+0

'continue'ループを繰り返しますが、条件が変更された場合、ループは終了します。 – Rogue

+0

入力が1または2に等しくないときに条件が変わるのが分かります。引き続き動作させるためには条件が真でなければならないということを理解していませんでした。おかげで – Maximus

答えて

0

continueは、ループの状態に戻り、再び評価されます。条件がfalseと評価された場合、ループは明らかに再び実行されません。

ループを実際にループし続けたい場合は、条件がtrueであることを確認する必要があります。

これは意味:あなたはcho = 1を設定し、sum < 21

を確認する必要があります。またsum < 21はすでにその可能性を排除するので、あなたの条件でsum != 21は、必要とされていないことに注意してください。

+0

ありがとう、これは多くを明確にし、実際に問題を解決しました!私はプログラミングには全く慣れていないので、私の偽科学のために私を許してください。 – Maximus

関連する問題