2017-06-19 8 views
0

このコードに問題があります。 私が見ている問題は、ユーザーがコードを実行して正しく推測するか最大試行回数を使用すると、whileループが実行されずにゲームを再開できることです。 私の考えは、カウンター(試行)をゼロにリセットして再開することですが、代わりに総合スコアで終了メッセージを取得しています。番号推測ゲームでループ中に再起動する方法

int guess = 0; 
    int attempt = 0; 
    int number = new Random().nextInt(1000) + 1; 
    int scorePlayer = 0; int scoreComputer = 0; 
    boolean repeat; 

    System.out.println("Hello and welcome to the number guessing game."); 
    System.out.println("Please guess a number between 1 and 1000"); 


    while(repeat == true){ 
     do{ 
      Scanner scan = new Scanner(System.in); 
      guess = Integer.parseInt(scan.nextLine()); 
      System.out.println("The number you guessed is "+guess); 
      attempt++; 

      if(guess == number){ 
       System.out.println("Congratulations! You got it!!"); 
       scorePlayer++; 
       System.out.println("Would you like to play again? [YES/NO]"); 
       Scanner a = new Scanner(System.in); 
       String answer = a.nextLine().toUpperCase(); 
       if (answer != "YES"){ 
        //repeat = false; 
        System.out.println("Thank you for playing"); 
        System.out.println("The final score is "+scorePlayer+" to you and "+scoreComputer+" to the server"); 
        if (scorePlayer<scoreComputer){ 
         System.out.println("Computer wins!"); 
        }else{ 
         System.out.println("You win!"); 
        }break; 
       }else{ 
        attempt = 0; 
       } 
      }else if(guess < number){ 
       System.out.println("That is incorrect, try a larger number"); 

      }else if(guess > number){ 
       System.out.println("That is incorrect, try a smaller number"); 

      }if(attempt == 10 && guess != number){ 
       System.out.println("That is the max number of guesses allowed"); 
       System.out.println("The number you were looking for is "+number); 
       scoreComputer++; 
       System.out.println("Would you like to play again? [YES/NO]"); 
       Scanner b = new Scanner(System.in); 
       String answer = b.nextLine().toUpperCase(); 
       if (answer != "YES"){ 
        //repeat = false; 
        System.out.println("Thank you for playing"); 
        System.out.println("The final score is "+scorePlayer+" to you and "+scoreComputer+" to the server"); 
        if (scorePlayer<scoreComputer){ 
         System.out.println("Computer wins!"); 
        }else{ 
         System.out.println("You win!"); 
        }break; 
       }else{ 
        attempt = 0; 
       } 
      } 

     }while(guess != number || attempt == 0); 
     repeat = false; 
    } 
+0

コンパイルエラー 'while(repeat = true)'を修正しました。最初の 'do-while'ループが終了した直後に' repeat'を 'false'に設定しました。だから外側のループのアイデアは何ですか?それは一度だけ実行されます。 – AKSW

答えて

2

シングル "="は代入演算子です。単純にダブル "=="に変更します。 ugurが言ったことに加えて

while(repeat == true) 
+0

それはそれを修正しません、その問題はそのタイプミスによって引き起こされていないので、私は問題が他の場所にあるかもしれないと思う。コードでは、正しい数字が推測された後、またはユーザーが試合を使い果たした後にゲームを再開することはできません – user3018640

1

、繰り返しがブール変数であるので、あなたは、単に(trueまたはfalseを返す)

while(repeat) 

を行うことができます

0

は、外側のループあなたの最後の行をチェック設定はrepeat=falseです。ですから内側のループからbreakを外に出すと、外側のwhileが繰り返し確認され、最初のものを除く毎回falseです。

関連する問題