猜猜游戏添加方法

时间:2014-10-08 00:49:52

标签: java methods jgrasp

我需要为我之前制作的猜谜游戏添加一种方法。该方法应返回它们输入的值,但应使用循环来要求重新输入,直到指定了这两个值中的一个。 此外,如果用户输入一个单词而不是一个int,它应该要求一个数字。我知道我需要使用字符串而不是int。我很难搞清楚这一点。以下是我到目前为止的情况:

import java.util.Random;

import java.util.Scanner;

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!");
                Scanner scan2 = new Scanner(System.in);
                System.out.println("do you wanna play again?[Y/N]");
                String val = scan2.next();
                if (val.equalsIgnoreCase("Y")) {
                    playGame();
                } else {
                    break;
                }
            }
        }
    }
}

2 个答案:

答案 0 :(得分:2)

可能有一种更好的方法可以做到这一点,但尝试以下几点:

String input = scan.next();
int guess;
try{
    guess = Integer.parseInt(input);
    //rest of the code inside while(true) loop
}
catch(Exception e){
    System.out.println("You need to enter a valid number.");
}

然后进行Y / N验证:

String val = "No";
Scanner scan2 = new Scanner(System.in);
do{
    System.out.println("do you wanna play again?[Y/N]");
    val = scan2.next();
}
while(!val.equalsIgnoreCase("Y") && !val.equalsIgnoreCase("N"))
if (val.equalsIgnoreCase("Y")) {
   playGame();
   break;
} else {
   break;
}

推理:如果他们没有输入有效数字,您将收到错误,因此您需要捕获错误并让他们知道错误。我喜欢将输入作为字符串并尝试将其转换为整数。至于do / while部分......除非他们输入Y或N,否则会继续问他们。一旦退出循环,如果输入是&#34; Y&#34;它将再次调用playGame()然后在完成后中断(基本上每当用户在下一个游戏中键入n时)。如果它不是&#34; Y&#34;然后它必须是&#34; N&#34;并需要打破。

如果这有帮助,请告诉我。我有完整的代码可以使用,但这应该很容易实现。

答案 1 :(得分:1)

声明静态变量时,请输入:

static int number, guess;

同时声明这两个数字。然后,在主循环内,执行以下操作:

while (true) {
    while (true) {
        try {
            guess = Integer.parseInt(scan.nextLine());
            break;
        } catch (Exception e) {
            System.out.println("Not a valid number!");
            continue;
        }
    }
    //Rest of your if's, else if's, etc
}

我测试了它,它对我有用。

如果你需要我,我可以粘贴所有代码,但是你应该能够在if语句之前将第二个循环嵌套在第一个循环中,这很容易。