我仍然在Java的学习部分。我做了一种猜谜游戏。它看起来像这样:
import java.util.Scanner;
import java.util.Random;
public class guessing_game {
static Scanner input = new Scanner(System.in);
static Random generator = new Random();
public static void main(String[] args) {
int number;
number = generator.nextInt(20);
System.out.println("Guess the number!");
game(number);
}
public static void game(int number) {
int inputStorage;
inputStorage = input.nextInt();
if (inputStorage == number) {
System.out.println("You've guessed the right number!");
}
else if (inputStorage != number) {
System.out.println("Wrong number, try again!");
game(number);
}
}
}
现在我遇到了问题。我的小妹妹和我玩这个“游戏”。我妹妹在小键盘上打字。在按下回车之前,她意外地按了+按钮,我得到了一些错误。我的问题是:我怎样才能让我的应用程序打印出一条线,表示你只能输入数字然后重新启动游戏存根?
答案 0 :(得分:4)
一种方法是将input.nextInt()包装在try catch语句中,并捕获input.nextInt(),InputMismatchException引发的异常。如果你不确定我在说什么,那么try here的一个很好的教程是{{3}}。
try {
inputStorage = input.nextInt();
} catch (InputMismatchException e){
System.out.println("invalid type");
}
另一种方法是:
if(input.hasNextInt()){
inputStorage = input.nextInt();
}else{
System.out.println("invalid type");
}
如果数字被正确猜测,继续游戏尝试使用带有中断的while循环也会出错:
int inputStorage;
boolean notGuessed = true;
while(notGuessed)
{
if(input.hasNextInt()){
inputStorage = input.nextInt();
} else{
System.out.println("invalid type");
}
if (inputStorage == number) {
System.out.println("You've guessed the right number!");
notGuessed = false;
}
else if (inputStorage != number) {
System.out.println("Wrong number, try again!");
}
}
答案 1 :(得分:1)
这很容易。你可以用各种方式完成它。
试试这个
public static int checkInt(String strNumber) {
int Number;
try {
Number = Integer.parseInt(strNumber);
} catch (NumberFormatException ex) {
Number = -1;
}
return Number;
}
甚至更简单:
public static int checkInt(String strNumber) {
Number = Integer.parseInt(strNumber, -1);
return Number;
}
第二个更简单,因为你省略了一个try catch块,在这种情况下没有正确使用。阅读有关Integer类的功能。
答案 2 :(得分:0)
您可以使用try/catch
:
boolean b = true;
while (b) {
try {
inputStorage = input.nextInt();
b= false;
} catch (InputMismatchException e) {
System.out.println("Invalid input. Please enter again!");
}
}
答案 3 :(得分:0)