gpt4 book ai didi

java - 读取不同类型变量时扫描仪异常

转载 作者:行者123 更新时间:2023-12-02 03:21:28 26 4
gpt4 key购买 nike

我有这样一个文件:

3
0.1
0.4
1

这就是我尝试阅读它的方式:

InputStream s = Main.class.getResourceAsStream("/file.txt");
Scanner scanner = new Scanner(s);
//Scanner scanner = new Scanner(path); **EDITED**
System.out.println(scanner.nextInt());
System.out.println(scanner.nextDouble());
System.out.println(scanner.nextDouble());
System.out.println(scanner.nextInt());

InputMismatchException 在我的代码的第三行中抛出。我知道我可以使用 readLine() 并将其解析为 int 或 double,但如果我的文件如下所示,它将不起作用:

3 0.1
0.4
1

在这种情况下,相同的异常会在同一个地方抛出。

最佳答案

根据您的描述,这看起来像是区域设置问题。正如Scanner docs所述:

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() 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.

我假设您的默认区域设置是波兰语区域设置,其中小数点分隔符是逗号。您可能想要更改输入文件以使用区域设置小数分隔符或使用小数分隔符为点的区域设置。例如,您可以在 Scanner 初始化后添加以下行:

scanner.useLocale(Locale.US);

关于java - 读取不同类型变量时扫描仪异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39556472/

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