我试过搜索谷歌和几个这样的网站来找到我的问题的答案,但我没有任何运气。我在大学的第二级 Java 课程中,我试图弄清楚如何在使用 try-catch 块时对浮点数进行输入验证。该场景的要点如下:
驱动程序将调用方法promptForMotherHeight(),该方法应该将用户的条目作为浮点数拉入。问题在于,使用 try-catch 块时,如果扫描器检测到非浮点数,它不会将数据转储出扫描器的缓冲区。这会导致无限循环。I've tinkered with adding a Scanner.next() inside my catch block, but any data entered after the first attempt will not validate properly (meaning that I can enter in something such as 5.55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 and it will accept this as a valid input) .
这是我正在使用的代码(我已经在类的顶部导入了我需要的所有东西,而 MotherHeight 是类顶部的私有浮点实例变量):
public void promptForMotherHeight()
{
String motherHeightPrompt = "Enter mother's height in inches: ";
String motherError1 = "Invalid entry. Must be positive.";
String motherError2 = "Invalid entry. Must be a decimal number.";
boolean valid = false;
do
{
System.out.print(motherHeightPrompt);
try
{
motherHeight = stdIn.nextFloat();
valid = true;
}
catch (InputMismatchException e)
{
System.out.println(motherError2);
stdIn.next();
}
} while(!valid);
}
任何关于我如何完成正确输入验证的指针或提示将不胜感激。谢谢