嘿,大家我正在用java(我目前还在学习语言)的个人项目工作,并带着一个或两个问题来到这里。扫描仪不按预期工作
首先问
在我try块允许我要求用户输入一个值赋给一个变量,并且在我的catch块,如果用户输入一个错误的值或跳过该条目,它抛出异常并通知用户已设置了默认值。这是做到这一点的正确方法是?
代码示例
(注:我有很多这样的尝试工作方式与方法中下面的一个相同/ catch语句)
try {
System.out.print("Please enter a value for price of computer: ");
price = sc.nextFloat();
} catch (InputMismatchException ex) { //Catch skip or error
System.out.println("You entered an invalid value for price, it is assumed to be 0.");
price = 0F; //Assign a default value
}
第二个问题
当我编译并执行它,它不允许我输入变量,而是跳到异常。我不确定我错过了什么,所以我会喜欢任何建议,并再次感谢一个伟大的社区。
您是否清除了扫描仪缓冲区? – Paul
我以为你不能明确地清除扫描仪的缓冲区。我在内部读过某处,它可能会在读取令牌后清除缓冲区,但这是程序员触及范围之外的实现细节。 – CoderC
要清除它,只需在将扫描仪用于其他数据类型之前调用nextLine()方法;例如,如果您使用nextLine()方法,然后想要使用nextFloat()方法,则必须创建一个新对象,或者您必须在nextFloat()方法之前再次使用nextLine()方法 – Paul