我刚开始用java写一个二十一点游戏。我试图让程序要求用户再次输入,如果他们输入的现金开头不是有效整数。我看到许多带catch的try语句的例子,但是没有一个是有用的。程序给出的错误InputMismatchException无法解析为类型。我遵循的一个线程就是这个,我有完全相同的代码,只是不同的变量名。这里是。 Java InputMismatchException
这是我的代码:
Scanner input_var=new Scanner(System.in);
System.out.println("Welcome to BlackJack!");
System.out.println("Enter how much money you will start with");
System.out.println("Starting cash must be whole number");
int money=0;
do{
try{
System.out.println("Enter how much money you will start with: ");
money=input_var.nextInt();
}
catch (InputMismatchException e){
System.out.println("Sry, not a valid integer");
input_var.nextInt();
}
input_var.nextLine();
}while (money<=0);
为什么我的几乎所有代码都不起作用的任何帮助将不胜感激。感谢您的时间和精力。
答案 0 :(得分:2)
使用input.next()
消费,因为input.nextInt()
不存在。这就是例外的全部内容。
do{
try{
System.out.println("Enter how much money you will start with: ");
money=input_var.nextInt();
}catch (InputMismatchException e){
System.out.println("Sry, not a valid integer");
input_var.next();
}
}while (money<=0);
答案 1 :(得分:1)
您可以在while循环中使用hasNextInt()。虽然下一个输入不是整数,但显示&#34;不是有效整数&#34;消息并获取下一个输入。当它是一个整数时,while循环将会中断,你可以做你需要做的事情。
答案 2 :(得分:1)
从try语句和input_var.nextInt();
中删除input_var.nextLine();
。
必须有像import java.util.*
或import java..util.InputMismatchException
这样的导入。
您使用的是哪个IDE?
答案 3 :(得分:1)
也许您正在寻找NumberFormatExcpetion
?它是将字符串转换为数字时抛出的内容。试着这样做:
Scanner input_var=new Scanner(System.in);
System.out.println("Welcome to BlackJack!");
System.out.println("Enter how much money you will start with");
System.out.println("Starting cash must be whole number");
int money=0;
do {
try {
System.out.println("Enter how much money you will start with: ");
money = Integer.parseInt(input_var.next());
}
catch(NumberFormatException e) {
System.out.println("Sry, not a valid integer");
input_var.next();
}
input_var.next();
} while (money<=0);