2014-09-24 56 views
0

好吧,所以我尝试了一种方法,但每次输入数字时都会显示“你想再玩一次”。这是我到目前为止。我还能做些什么,以便只有在用户猜到正确的答案后才会问他/她是否想再玩一次?猜测游戏再次出现问题

import java.util.Random; 
import java.util.Scanner; 

public class GuessNumber { 

    public static void main(String[] args) { 

     Scanner scan = new Scanner(System.in); 

     Random rand = new Random(); 
     int number = rand.nextInt(100) + 1; 
     int guess; 

     System.out.println("Guess the number between 1 and 100\n"); 

     guess = scan.nextInt(); 

     while (true) { 
      if(guess < number)  
       System.out.println("Higher!"); 
      else if(guess > number) 
       System.out.println("Lower!"); 
      else if (guess == number){ 
       System.out.println("Correct!"); 
      } 
       guess = scan.nextInt(); 
     } 
    } 
    } 

回答

0

您需要在正确时退出while。

要做到这一点,该行之后:

System.out.println("Correct!"); 

添加另一条线路是这样的:

break; 
0

大多是出于好玩,我实现了一个游戏适合你试图什么说明去做。代码不是最干净/最有效的,但它绝对有效!

看看它,看看你是否能找出你的问题。

import java.util.Random; 
import java.util.Scanner; 

public class GuessingGame { 

public static void main(String[] args) { 

     System.out.println("Guess the number between 1 and 100"); 

     playGuessingGame(); 

     while (true) { 
      System.out 
       .println("Do you want to play again? Type y/n and hit enter"); 

      Scanner scan = new Scanner(System.in); 
      String playAgain = scan.next(); 

      if (playAgain.charAt(0) == 'y') { 
       System.out.println("Okay, I picked a new number. Good luck!"); 
       playGuessingGame(); 
      } else { 
       System.out.println("Thanks for playing!"); 
       break; 
      } 
     } 

    } 

    public static void playGuessingGame() { 
     Scanner scan = new Scanner(System.in); 
     Random rand = new Random(); 

     int guess; 
     int number = rand.nextInt(100) + 1; 

     guess = scan.nextInt(); 

     while (guess != number) { 
      if (guess < number) 
       System.out.println("Higher!"); 
      else if (guess > number) 
       System.out.println("Lower!"); 
      else if (guess == number) { 
       System.out.println("Correct!"); 
      } 
      guess = scan.nextInt(); 
     } 
    } 
} 
1

尝试这个

class GuessNumber { 

    static Random rand = new Random(); 
    static Scanner scan = new Scanner(System.in); 
    static int number; 

    public static void main(String[] args) { 
     playGame(); 
    } 

    public static void playGame() { 
     number = rand.nextInt(100) + 1; 
     System.out.println("Guess the number between 1 and 100"); 
     while (true) { 
      int guess = scan.nextInt(); 
      if (guess < number) { 
       System.out.println("Higher!"); 
      } else if (guess > number) { 
       System.out.println("Lower!"); 
      } else if (guess == number) { 
       System.out.println("Correct!"); 
       System.out.println("Do you like to play again?[1 for Yes/0 for No]"); 
       int val = scan2.next(); 
       if (val == 1) 
        playGame(); 
       else 
        break; 
      } 
     } 
    } 
} 

或而不是使用相同的扫描仪,你可以使用另一个扫描仪,并得到字符串输入如下

else if (guess == number) { 
     System.out.println("Correct!"); 
     Scanner scan2 = new Scanner(System.in); 
     System.out.println("Do you like to play again?[Y/N]"); 
     String val = scan2.next(); 
     if (val.equalsIgnoreCase("Y")) 
      playGame(); 
     else 
      break; 
} 
+0

这是一个好!但我删除了System.out.println(number);所以它会在运行时显示数字 – user4068770 2014-09-24 05:30:35

+0

@ user4068770抱歉有错误。我只是为了我的调试目的。在发布答案之前,我忘了删除它。现在我删除它。希望这对你有所帮助。 – 2014-09-24 05:34:14

+0

帮了很多,谢谢! – user4068770 2014-09-24 06:15:58