当用户输入错误的值时,代码会继续进入无限循环

时间:2015-06-23 17:15:32

标签: java loops while-loop

我添加了一个while循环,以便在用户输入无效值时,代码将重新提示用户输入有效值。但是当用户输入无效值时,代码进入无限循环。任何帮助将不胜感激!!

$_REQUEST['foo']['bar']['baz'][42]

2 个答案:

答案 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;