2013-11-20 17 views
5

Tôi đang cố gắng viết một trò chơi nhỏ, nhưng đã bị kẹt về cách nhắc người dùng nếu họ muốn chơi lại và cách thoát khỏi vòng lặp nếu họ không muốn chơi lại. ..Làm thế nào để thoát khỏi vòng lặp Java? Trong khi vòng lặp trong trò chơi đoán cơ bản

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

tùy chọn tốt nhất để thoát khỏi vòng lặp đang sử dụng 'ngắt'. Vì vậy, hãy tạo một điều kiện (nếu) và kiểm tra xem liệu người dùng có muốn chơi lại không và nếu không thì sẽ trở lại ngắt – k4sia

Trả lời

11

Bạn có thể sử dụng break để có được ra khỏi vòng lặp hiện hành.

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

Prints:

0 
1 
2 
3 
4 
5 

Tuy nhiên, một vòng lặp do-while có lẽ là tốt hơn đối với trường hợp sử dụng của bạn.

5

Thay đổi

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

sau đó yêu cầu người sử dụng ở đâu đó nếu họ vẫn muốn chơi và thiết lập biến này để false nếu không muốn nói.

Giải pháp khác là giữ mã của bạn như hiện tại và chỉ cần gọi break; sau khi bạn yêu cầu người dùng và họ nói họ không muốn tiếp tục, thao tác này sẽ nhảy ra khỏi vòng lặp hiện tại và tiếp tục tại điểm đầu tiên sau vòng lặp. Điều này ít được ưa chuộng hơn vì có thể khó theo dõi luồng chương trình khi bạn đọc mã, đặc biệt nếu bạn bắt đầu có vòng lặp lồng nhau hoặc nhiều điểm break.

0

Bạn có thể thay đổi câu hỏi while(true) bằng câu hỏi 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")); 

Nếu bạn muốn thoát khỏi vòng lặp, bạn có thể sử dụng câu lệnh break.

Các vấn đề liên quan