2013-11-20 6 views
5

Próbuję napisać małą grę, ale utknąłem na tym, jak zapytać użytkownika, czy chce znowu grać, i jak wyjść z pętli, jeśli nie chcą grać ponownie. ..Jak wyjść z pętli Java? Pętla w podstawowej grze z odgadywaniem

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++; 


     } 
    } 
} 

}

+0

Najlepsza opcja wyjścia z pętli to "przerwa". Więc stwórz warunek (jeśli) i sprawdź gdzie, jeśli użytkownik chce zagrać ponownie, a jeśli nie, to zrób przerwę – k4sia

Odpowiedz

11

można użyć break wyjść z pętli prądowej.

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

Wydruki:

0 
1 
2 
3 
4 
5 

Jednak do-while pętla jest prawdopodobnie lepsza dla przypadku użycia.

5

Zmień

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; 
} 

do

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

następnie poprosić użytkownika gdzieś jeśli nadal chcą grać i ustawić tę zmienną na false czy nie.

Drugim rozwiązaniem jest zachowanie kodu w stanie, w jakim się znajduje, i po prostu zadzwoń pod numer break; po tym, jak zapytasz użytkownika, a on powie, że nie chce kontynuować, po prostu wyskakuje z bieżącej pętli i wznawia w pierwszym punkcie po pętla. Jest to mniej preferowane, ponieważ może być trudniej prześledzić przebieg programu podczas czytania kodu, zwłaszcza jeśli zaczynasz mieć zagnieżdżone pętle lub wiele punktów break.

0

Można zmienić oświadczenie while(true) za pomocą instrukcji .

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")); 

Jeśli chcesz wyjść z pętli, możesz użyć instrukcji break.