我添加了一个while循环,以便在用户输入无效值时,代码将重新提示用户输入有效值。但是当用户输入无效值时,代码进入无限循环。任何帮助将不胜感激!!
$_REQUEST['foo']['bar']['baz'][42]
答案 0 :(得分:5)
当the nextDouble
method抛出InputMismatchException
时,它不会消耗导致异常的错误输入。
如果下一个标记无法转换为有效的double值,则此方法将抛出InputMismatchException。如果翻译成功,扫描仪将超过匹配的输入。
你应该超越错误的输入,否则nextDouble
会一遍又一遍地继续阅读相同的错误输入。
消耗错误的输入并用in.next()
丢弃它,例如:
catch(java.util.InputMismatchException E)
{
in.next();
System.out.println("wrong input, try again");
}
答案 1 :(得分:0)
以上建议可行。但是,您需要检查判别式。当判别式小于零时,您不处理这种情况。如果判别式为负,您将获得NaN作为根。有关更多详细信息,请参阅Math.sqrt()文档。
//x1 = (-b+sqrt(b*b - 4ac))/2a
//x2 = (-b+sqrt(b*b - 4ac))/2a
discriminant = b*b -4.0 * a * c;
x1 = (-b + Math.sqrt(discriminant))/2.0*a;
x2 = (-b - Math.sqrt(discriminant))/2.0*a;