Amr*_*ngh 2 java loops while-loop
我添加了一个while循环,以便在用户输入无效值时,代码将重新提示用户输入有效值.但是当用户输入无效值时,代码进入无限循环.任何帮助将非常感激 !!
public static void main(String[] args) {
System.out.println("Usage : enter a, b, & c from a quadratic equation");
System.out.println(" aX^2 +bX + c = 0");
System.out.println(" Result will be 2 values for X");
Scanner in = new Scanner(System.in);
double a = 0;
double b = 0;
double c = 0;
double x1 = 0 ;
double x2 = 0;
double discriminant = 0;
System.out.println("Please enter values for a , b, and c ");
while(true){
try
{
a = in.nextDouble();
break;
}
catch(java.util.InputMismatchException E)
{
System.out.println("wrong input, try again");
}
}
while(true){
try
{
b = in.nextDouble();
break;
}
catch(java.util.InputMismatchException E)
{
System.out.println("wrong input, try again");
}
}
while(true){
try
{
c = in.nextDouble();
break;
}
catch(java.util.InputMismatchException E)
{
System.out.println("wrong input, try again");
}
}
//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;
System.out.println("The two values for X are " + x1 + " and " + x2);
}
Run Code Online (Sandbox Code Playgroud)
当该nextDouble方法抛出InputMismatchException,它不消耗导致异常的错误的输入.
如果下一个标记无法转换为有效的double值,则此方法将抛出InputMismatchException.如果翻译成功,扫描仪将超过匹配的输入.
你应该超越不良输入,否则nextDouble将继续一遍又一遍地读取相同的错误输入.
消耗不良输入并将其丢弃in.next(),例如:
catch(java.util.InputMismatchException E)
{
in.next();
System.out.println("wrong input, try again");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |