java如何处理无效的用户输入?
对于我的餐厅选择器程序,我需要编写一个使用决策结构的程序:在编译和运行它时,我会遇到一些错误,例如:
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextBoolean(Scanner.java:1893)
at ABaybayanAssignment3.main(ABaybayanAssignment3.java:12)
我想知道我能对我的代码做些什么来修复它。我的代码可以在下面找到
import java.util.Scanner;
public class ABaybayanAssignment3 {
public static void main(String[]args) {
Scanner scnr = new Scanner(System.in);
System.out.println("Type yes or no for the following questions:");
System.out.println("Is anyone in your party vegetarian?");
boolean Vegetarian = scnr.nextBoolean();
System.out.println("Is anyone in your party vegan?");
boolean vegan = scnr.nextBoolean();
System.out.println("Is anyone in your party gluten free?");
boolean glutenFree = scnr.nextBoolean();
System.out.println("Here are your restaurant choices:");
if(Vegetarian || vegan || glutenFree ) {
System.out.println("Corner Cafe");
}
if(!Vegetarian && !vegan && !glutenFree) {
System.out.println("Joe's Gourmet Burgers");
}
if(!vegan) {
System.out.println("Main Street Pizza Company");
}
if(!vegan && !glutenFree) {
System.out.println("Mama's Fine Italian");
}
}
}
# 1 楼答案
我认为主要的问题是你不能处理无效的输入错误。最好捕获这些异常,并提示用户输入有效的输入。或者,您还可以添加一个默认值,在用户未输入任何内容的情况下,将布尔值设置为该值(当然,在程序开始时指定)
这样的事情应该有助于传达我的意思:
# 2 楼答案
程序编译和运行时没有任何错误
程序的问题是在运行时将
yes
和no
赋值给布尔变量Vegetarian
,vegan
,glutenFree
,这是错误的<强>也不同于C++,java中的布尔值不能赋给< < />强> ->仅<强>真< <强> >或<强> false <强> >。p>
此外,改变
到
# 3 楼答案
我有一个解决方案。我使用了Boolean并使用了
true/false
而不是yes/no
。两者在逻辑上是相同的。这是我的节目我的结果显示
我已经改变了程序,当然是为了让它更容易。由于使用了Boolean,那么唯一的选项是true或false。除此之外,if-else验证也被修改为abit,以补充
true/false
输入。所以我希望这能回答你的问题