2016-07-23 7 views
-1

私は現在、基本的なJavaクラスを習っている学生です。 私は、「開始」と「終了」するゲームの入力をユーザーに求めるコードを作成しています。 Sooo私は文字列「S」と「Q」をそれぞれ選択しました。ユーザがSを入力すると、ゲームは進行する。ユーザーがQを入力すると、「おかげで遊んでいます」と表示されます。ユーザがSおよびQ以外の何かを入力すると、プログラムは有効な入力を得るまで再度尋ねる。 I ほとんどは、エラーチェックの部分を除いてすべて正しくなっています。私のコードを修正するための提案はありますか?Javaでのエラーチェック:Sを開始し、Qを終了する

ありがとうございます! :)

(部分コード)

Scanner scan = new Scanner(System.in); 
    String userInput; 
    boolean game = false; 

    System.out.println("Welcome to the Game! "); 
    System.out.println("Press S to Start or Q to Quit"); 

    userInput = scan.nextLine(); 

    if (userInput.equals("S")){ 
     game = true; 
    } else if (userInput.equals("Q")){ 
     game = false; 
    } else { 
     do { 
      System.out.println("Invalid input! Enter a valid input: "); 
      userInput = scan.nextLine(); 
     } while (!"S".equals(userInput)) || (!"Q".equals(userInput)); // I'm not sure if this is valid??? 
    } 

    if (userInput.equals("S")){ 
     ///// Insert main code for the game here//// 
    } else if (userInput.equals("Q")){ 
    System.out.println("Thank you for playing!"); 
    } 
+1

あなたの問題について具体的にお答えできますか? –

答えて

2

あなたが無限ループ作成している:にこの条件の

while (!"S".equals(userInput)) || (!"Q".equals(userInput)); // always true 

をしませあなたがに等しい入力が必要となります開催"S"および~"Q"を一緒にする。それはDe-Morgan's law適用参照するのは簡単です:

while (!("S".equals(userInput)) && "Q".equals(userInput))); // always true 

を明らかに、それは起こりません。

おそらくたい:

while (!"S".equals(userInput)) && (!"Q".equals(userInput)); 
+0

コードが最終的に機能しました!ありがとう、良い先生! –

+0

@dont_me:[誰かが私の質問に答えるとどうすればいいですか?](http://stackoverflow.com/help/someone-answers) –

0

私はまだ答えに投票することはできませんが、以前の1は正しいです。

ロジックアウト速報:

input = "Z" 
while(!(S==Z) || !(Q==Z)) -> while(!(F) || !(F)) -> while(T || T) -> repeat 

input = "Q" 
while(!(S==Q) || !(Q==Q)) -> while(!(F) || !(T)) -> while(T || F) -> repeat 

はへの切り替えを "と" ケース#2の作業を行います。 "ゲーム"ブール値で何かしますか?ユーザーがwhileループに入ると、ブール値は常にfalseになります。

関連する問題