点正在返回 MisMatch 异常,即使我正在使用 Locale.US

Dots are returning me MisMatch exceptions, even i'm using Locale.US

我在 next.Double() 上尝试输入带点的数字后,我的程序返回不匹配异常。我正在使用 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 行输入“​​45.5”后收到异常错误消息 (nota1 = sc.nextDouble();)。

错误信息:

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 application.Program.main(Program.java:19)

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

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

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

或者您也可以使用:

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

在不修改默认区域设置的情况下直接设置要在扫描仪上使用的区域设置。