我在next.Double()上尝试用点输入数字后,程序返回Mismatch异常。我正在使用Locale.US。
Scanner sc = new Scanner(System.in);
Locale.setDefault(Locale.US);
double nota1, nota2, resultado;
nota1 = sc.nextDouble();
nota2 = sc.nextDouble();
resultado = nota1 + nota2;
if (resultado < 60.0) {
System.out.println("NOTA FINAL = " + resultado);
System.out.println("REPROVADO");
}
else {
System.out.println("NOTA FINAL = " + resultado);
}
sc.close();
尝试在第19行(nota1 = sc.nextDouble();
)上输入“ 45.5”后,出现异常错误消息。
错误消息:
线程“ main”中的异常java.util.InputMismatchException
在java.util.Scanner.throwFor(Scanner.java:864)
在java.util.Scanner.next(Scanner.java:1485)
在java.util.Scanner.nextDouble(Scanner.java:2413)
在application.Program.main(Program.java:19)
答案 0 :(得分:0)
您只需要将第一个行的顺序更改为
Locale.setDefault(Locale.US);
Scanner sc = new Scanner(System.in);
在创建扫描仪之前,首先要设置系统默认语言环境。 创建新的扫描程序时,它将获取并使用在创建时设置的默认语言环境,因此必须在扫描程序初始化之前完成默认语言环境的设置。
或者,您也可以使用:
Scanner scanner = new Scanner(System.in).useLocale(Locale.US);
直接设置要在扫描仪上使用的语言环境,而无需修改默认语言环境。