点返回了MisMatch异常,即使我使用的是Locale.US

时间:2019-12-06 14:39:38

标签: java mismatch

我在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)

1 个答案:

答案 0 :(得分:0)

您只需要将第一个行的顺序更改为

Locale.setDefault(Locale.US);
Scanner sc = new Scanner(System.in);

在创建扫描仪之前,首先要设置系统默认语言环境。 创建新的扫描程序时,它将获取并使用在创建时设置的默认语言环境,因此必须在扫描程序初始化之前完成默认语言环境的设置。

或者,您也可以使用:

Scanner scanner = new Scanner(System.in).useLocale(Locale.US);

直接设置要在扫描仪上使用的语言环境,而无需修改默认语言环境。