2017-05-14 11 views
0
if (sum < 6) { 
    System.out.println("You win"); 
    System.out.println(); 
    // Does the user want to retry? 
    System.out.print("Would you like to retry?(Y or N) : "); 
    String retry = input.nextLine(); 

    while (true) { 
     // If they say y or Y, roll again 
     if (("y".equals(retry)) || ("Y".equals(retry))) { 
      roll(); 
     // Check for anything other than y and Y 
     } else if (("n".equals(retry)) || ("N".equals(retry))) { 
      System.out.println("Closing"); 
      break; 
     } else if (!("y".equals(retry)) || !("Y".equals(retry))) { 
      System.out.print("Invalid input. Would you like to retry?(Y or N) : "); 
      retry = input.nextLine(); 
      System.out.println(); 

     } 
    } 
} else if (sum > 6) { 
    System.out.println("You lose"); 
    System.out.println(); 
    System.out.print("Would you like to retry?(Y or N) : "); 
    String retry = input.nextLine(); 
    while (true) { 
     if (("y".equals(retry)) || ("Y".equals(retry))) { 
      roll(); 
     } else if (("n".equals(retry)) || ("N".equals(retry))) { 
      System.out.println("Closing"); 
      break; 
     } else if (!("y".equals(retry)) || !("Y".equals(retry))) { 
      System.out.print("Invalid input. Would you like to retry?(Y or N) : "); 
      retry = input.nextLine(); 
      System.out.println(); 
     } 
    } 
} 

ユーザーが"y"または"Y"を入力したときに、ゲームがダイスを回転させ続けるサイコロゲームを作ろうとしています。また、ユーザーが"n"または"N"を入力したときに、ゲームを停止して"Closing"と言うこともあります。私のwhileループは休憩で止まりませんか?

ユーザーが"n"または"N"を入力すると、"Closing"が印刷されますが、ループが停止せず、ゲームが再びダイスをロールします。ユーザーが"n"または"N"を入力したときにwhile()ループを停止するにはどうすればよいですか?ユーザがゲーム("n" or "N")を停止することを選択したとき

がここに出力です:

you like to retry?(Y or N) : n 
Closing 
Rolling... 
You rolled : 1 & 4 
Sum = 5 
You win 

私は、このような基本的な質問には申し訳ないだろう、私はプログラミングに新しいです。

+0

クイック編集:最初の「再試行?」でユーザーが「n」または「N」を入力すると、ゲームが終了します。しかし、「y」または「Y」を入力してゲームを停止すると、ループは継続します。 – Crypto

+1

どのように@JarrodRobersonが重複しているはずですか?彼が「スキャナ」を使用しているのは重複していないので、論理エラーがあり、System.inからのスキャンには本当に関連していませんでした - 間違ったラインがスキャナを使用したばかりですが、問題自体はスキャナ。 – luk2302

答えて

5

String retry = input.nextLine();をループのwhileループに移動します(両方の分岐の場合)。現在、ある入力を読み込んだ後、その変化しない入力を何度も何度も比較します。

+0

うわー、こんなふうに感じる。どうもありがとうございました! – Crypto

+1

@Cryptoは、ノブのように感じることはありません、それらの "単純な"エラーは、最も経験豊富なプログラマに起こる:) – luk2302

+0

ああ私は、ありがとう、参照してください! – Crypto

関連する問題