gpt4 book ai didi

java - 为什么当我使用扫描仪 sc.nextDouble() 时出现 InputMismatchException

转载 作者:行者123 更新时间:2023-11-30 08:13:06 25 4
gpt4 key购买 nike

我想从 txt 文件读取数据,但在调用 nextDouble() 方法时出现 InputMismatchException。尽管我使用了 useLocale 方法,但它不起作用。

txt文件第一行是:1;forname;1.9

public class SimpleFileReader {
public static void main(String[] args){
readFromFile();
}
public static void readFromFile(){
try {
int x = 0;
File file = new File("read.txt");
Scanner sc = new Scanner(file).useDelimiter(";|\\n");
sc.useLocale(Locale.FRENCH);
while (sc.hasNext()){
System.out.println(sc.nextInt()+" "+sc.next()+" "+sc.nextDouble());
x++;
}
System.out.println("lines: "+x);
} catch (Exception e) {
e.printStackTrace();
}
}
}

最佳答案

归咎于法语语言环境:它使用逗号作为小数点分隔符,因此 1.9 无法解析。

1.9 替换为 1,9 可以修复该问题 ( demo 1 )。如果您想解析 1.9,请使用 Locale.US 而不是 Locale.FRENCH ( demo 2 )。

代码中的第二个问题是使用 \\n 作为分隔符。您应该使用单个反斜杠,否则包含 n 的单词会破坏您的解析逻辑。

关于java - 为什么当我使用扫描仪 sc.nextDouble() 时出现 InputMismatchException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30080772/

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