gpt4 book ai didi

java - 为什么使用 nextFloat 读取时会出现 InputMismatchException?

转载 作者:行者123 更新时间:2023-12-01 11:56:48 26 4
gpt4 key购买 nike

这段代码没有语法错误,但是当我输入浮点值时,出现了InputMismatchException。 Double 值而不是 float 会得到相同的异常。如果我以 F.f 格式(带点)输入每个值,则会出现异常。如果我输入 1,9 值(逗号),则此代码有效。为什么?

Scanner l = new Scanner(System.in);
String n;
int i;
float a;
System.out.print("N: ");
n = l.nextLine();
System.out.print("I: ");
i = l.nextInt();
System.out.print("A: ");
a = l.nextFloat();
System.out.println(n);
System.out.println(i);
System.out.println(a);

提前致谢!

最佳答案

javadoc 解释说,Scanner 方法在读取数字时默认使用默认区域设置的格式规则。

它说:

An instance of this class is capable of scanning numbers in the standard formats as well as in the formats of the scanner's locale. A scanner's initial locale is the value returned by the Locale.getDefault(Locale.Category.FORMAT) method; it may be changed via the useLocale(java.util.Locale) method. The reset() method will reset the value of the scanner's locale to the initial locale regardless of whether it was previously changed.

所以...如果您想让程序识别 1.9 而不是 1,9,请更改您的默认区域设置(在程序内,在启动时)参数,或在系统设置中)...或使用适当的区域设置配置扫描仪,如所述。

关于java - 为什么使用 nextFloat 读取时会出现 InputMismatchException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28389759/

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