我需要为我不久前制作的猜谜游戏添加一个方法。该方法应该返回它们输入的值,但应该使用循环来要求重新输入,直到指定这两个值之一。 此外,如果用户输入一个单词而不是一个整数,它应该要求一个数字。我知道我需要使用字符串而不是整数。我只是很难弄清楚这一点。这是我到目前为止所拥有的:
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;
}
}
}
}
}
最佳答案
可能有更好的方法来做到这一点,但请尝试以下方法:
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,否则它将继续询问他们。一旦退出循环,如果输入是“Y”,它将再次调用 playGame() ,然后在完成后中断(基本上每当用户在下一个游戏中输入 n 时)。如果它不是“Y”,那么它一定是“N”并且需要中断。
请告诉我这是否有帮助。我有可以运行的完整代码,但这对您来说应该很容易实现。
关于java - 猜谜游戏添加方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26247562/