web-dev-qa-db-fra.com

Comment sortir de la boucle Java? While-loop dans un jeu de devinettes basique

J'essaie d'écrire un petit jeu, mais je ne sais pas trop comment demander à l'utilisateur s'il veut rejouer et comment sortir de la boucle s'il ne veut plus jouer à nouveau.

import Java.util.Random;
import Java.util.Scanner;

public class Guessinggame {

public static void main(String[] args) {

    System.out.println("Welcome to guessing game! \n" + " You must guess a number between 1 and 100. ");

    while (true) {

        Random randomNumber = new Random();
        Scanner g = new Scanner(System.in);

        int number = randomNumber.nextInt(100) + 1;
        int guess = 0;
        int numberOfGuesses = 0;

        while (guess != number){

            System.out.print("Guess: ");
            guess = g.nextInt();

            if (guess > number ){
                System.out.println( "You guessed too high!");
            }else if (guess < number ){
                System.out.println( "You guessed too low!");
            }else{
                System.out.println( "Correct! You have guessed "+ numberOfGuesses + " times. \nDo you want to play again? (y/n)  ");

            }
            numberOfGuesses++;


        }
    }
}

}

5
user2906011

Vous pouvez utiliser break pour sortir de la boucle en cours.

for (int i = 0; i < 10; i++) {
  if (i > 5) {
    break;
  }
  System.out.Println(i);
}

Impressions:

0
1
2
3
4
5

Cependant, une boucle do-while est probablement meilleure pour votre cas d'utilisation. 

11
Zach Latta

Changement 

while(true){
  //At some point you'll need to 
  //exit the loop by calling the `break` key Word
  //for example:

  if(/*it's not compatible with your condition*/)
    break;
}

à 

boolean userWantsToPlay=true;
do{
   //the same as before
} while (userWantsToPlay);

demandez ensuite à l'utilisateur quelque part s'il veut toujours jouer et définissez cette variable sur false sinon. 

L'autre solution consiste à conserver votre code tel quel et à simplement appeler break; après avoir demandé à l'utilisateur de ne pas continuer, cela saute hors de la boucle en cours et reprend au premier point après la boucle. Ceci est moins souhaitable car il peut être plus difficile de suivre le flux du programme lorsque vous lisez le code, en particulier si vous commencez à avoir des boucles imbriquées ou plusieurs points break.

5
Ross Drew

Vous pouvez modifier l'instruction while(true) avec l'instruction do while.

Scanner k= new Scanner(System.in);

do{
// do sth here...

//ask to user for continue or exit
System.out.println("Continue/Break");
String answer = k.next();

}while(answer.equals("Continue"));

Si vous souhaitez quitter la boucle, vous pouvez utiliser l'instruction break.

0
Batuhan Bardak