3 回答
TA贡献1829条经验 获得超9个赞
尽管您的程序适用于有效输入,但您可以通过检查无效输入(例如需要数字的非数字)来使其稳健。您的程序崩溃的原因是:当用户在此行中输入字符串而不是数字时:
numberCups = scnr.nextFloat();
...那么该方法nextFloat()将引发异常,NumberFormatException准确地说是 a 。Java 解释器无法处理此异常 - 它不知道在出现此(有效)情况时该怎么办。您可以采取以下措施:
do {
bool validInput = true;
try {
numberCups = scnr.nextFloat();
}
catch(NumberFormatException ex) {
validInput = false;
System.out.println("Please enter a number.");
}
} while(!validInput);
现在,Java 将try执行nextFloat,如果失败并显示NumberFormatException,则执行该catch块。这让您有机会告诉用户他们的输入是错误的。我已经把所有东西都放在一个循环中,这样当出现异常时,循环就会再次运行,直到输入一个有效的数字。请注意,如果未出现异常,则catch永远不会执行该块。
在这样的try块中包装可能发生预期错误的代码是一种很好的做法,以便处理这种情况而不会不必要地使程序崩溃。请注意,有多种类型的 Exceptions。你应该赶上你期望可能发生的事情。
TA贡献1841条经验 获得超3个赞
您可以更改nextFloat()
and nextInt()
for nextLine()
,然后尝试使用and将它们转换为 try-catch 块Integer
或Float
在 try-catch 块内。Integer.parseInt()
Float.parseFloat()
添加回答
举报