Ich habe ein Problem mit diesem Code. Das Problem, wie ich es sehe ist, dass, wenn der Benutzer den Code ausführt und entweder richtig rät oder die maximale Anzahl von Versuchen verwendet, die While-Schleife nicht eingreift und das Spiel neu starten lässt. Meine Idee ist, den Zähler (Versuch) auf Null zurückzusetzen und neu zu starten, aber ich bekomme nur die Exit-Nachricht mit der Gesamtpunktzahl stattdessen.Wie neu starten while loop Anzahl Guessing Spiel
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;
}
Gegeben dann fixiert man den Compilerfehler 'while (repeat = true)': Sie setzen 'repeat' auf' false' direkt nach dem ersten inneren 'do-while'-Schleife beendet wurde. Was ist also die Idee der äußeren Schleife? Es läuft genau einmal. – AKSW