gpt4 book ai didi

java - 即使我使用的是 Locale.US,点也会返回 MisMatch 异常

转载 作者:行者123 更新时间:2023-12-01 19:36:23 26 4
gpt4 key购买 nike

我尝试在 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 行 ( nota1 = sc.nextDouble(); ) 上尝试输入“45.5”后,我收到异常错误消息。

错误消息:

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);

直接设置在扫描仪上使用的区域设置,而无需修改默认区域设置。

关于java - 即使我使用的是 Locale.US,点也会返回 MisMatch 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59215212/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com