我有以下代码,其中的想法是用户输入两个数字,然后计算两个数字的总和。 如果值无效,例如输入一个字符,应该输出一条错误消息,但我不断收到错误
Java
package calculator;
import java.util.Scanner;
public class calculator {
/**
* @param args
*/
public static void main(String[] args) {
double n1, n2;
String operation;
Scanner scannerObject = new Scanner(System.in);
System.out.println("Enter first number");
n1 = scannerObject. nextDouble();
System.out.println("Enter second number");
n2 = scannerObject. nextDouble();
Scanner op = new Scanner(System.in);
System.out.println("Enter your operation");
operation = op.next();
switch (operation) {
case "+":
System.out.println("Your answer is " + (n1 + n2));
break;
case "-":
System.out.println("Your answer is " + (n1 - n2));
break;
case "/":
System.out.println("Your answer is " + (n1 / n2));
break;
case "*":
System.out.println("Your asnwer is " + (n1 * n2));
break;
default:
System.out.println("I do not know!");}
}
int function(){
Scanner input = new Scanner(System.in);
System.out.print("Enter an integer between 1-100: ");
int range;
while(true){
if(input.hasNextInt()){
range = input.nextInt();
if(0<=range && range <= 100)
break;
else
continue;
}
input.nextLine(); //Comsume the garbage value
System.out.println("Enter an integer between 1-100:");
}
return range;
}
}
这些是我收到的错误消息:
错误
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextDouble(Scanner.java:2456)
at calculator.calculator.main(calculator.java:14)
我尝试了很多不同的方法,但无法让它按照我想要的方式工作。
有人可以帮忙吗?
感谢您的阅读
最佳答案
此异常由 Scanner
类的实例引发,以指示检索到的 token 与预期类型的模式不匹配,或者检索到的 token 超出范围。
您可以在此处查看异常的文档:https://docs.oracle.com/javase/7/docs/api/java/util/InputMismatchException.html
取自 Scanner 上的文档
double nextDouble()
Returns the next token as a long. If the next token is not a float or is out of range, InputMismatchException is thrown.
我怀疑您输入的电话号码不正确。确保您的输入格式正确。
您还应该设置扫描仪的区域设置
,因为某些区域设置
需要逗号,
而不是点。
,如:
Scanner scanner = new Scanner(System.in).useLocale(Locale.US);
关于用户输入的 Java 验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33619363/