【发布时间】:2019-02-12 14:18:08
【问题描述】:
这是我的代码中的 void main。当我编译代码时,它没有显示错误,但是当我输入任何随机字母时,它会显示以下线程。
输出:
Please enter the equation :
2323.10ffxcv
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextDouble(Scanner.java:2413)
at Calculator.main(calculator.java:31)
[这是 CMD 中的输出。][1]
代码:
Calculator calc = new Calculator();
Scanner numbers = new Scanner(System.in);
System.out.println("Please enter the equation : ");
double a = numbers.nextDouble();
char sign = numbers.next().charAt(0);
double b = numbers.nextDouble();
switch (sign) {
case '+':
calc.add(a, b);
break;
case '-':
calc.sub(a, b);
break;
case '*':
calc.multiply(a, b);
break;
case '/':
calc.divide(a, b);
break;
default:
System.out.println("Sorry I ( The program ) did not understand");
while (sign != '+' || sign != '-' || sign != '*' || sign != '/') {
switch (sign) {
case '+':
calc.add(a, b);
break;
case '-':
calc.sub(a, b);
break;
case '*':
calc.multiply(a, b);
break;
case '/':
calc.divide(a, b);
break;
default:
System.out.println("Sorry I ( The program ) did not understand");
break;
}
}
break;
}
请帮忙!
【问题讨论】:
-
问题位于您的
calculator.java31 号码行 -
它是一个运行时异常,告诉您输入不匹配。正如预期的那样,输入字母来计算某些东西会破坏您的应用程序。我认为按预期工作。
-
发生这种情况是因为您尝试使用
numbers.nextDouble();读取双精度,但提供了字母。您可以将其放在 try/catch 块中以捕获无效输入,或使用nextLine()并自己验证String。 -
但它会使用
switch验证字符串
标签: java char java.util.scanner calculator