我想从txt文件中读取数据,但是InputMismatchException在调用nextDouble()method 时得到了。即使我正在使用该useLocale方法,但它不起作用。
txt
InputMismatchException
nextDouble()
useLocale
txt文件的第一行是: 1;forname;1.9
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为1,9可修复问题(演示1)。如果您想解析1.9,请使用Locale.US代替Locale.FRENCH(demo 2)。
1,9
Locale.US
Locale.FRENCH
您的代码中的第二个问题是使用\\n用作分隔符。您应该使用单个反斜杠,否则包含的单词n将破坏您的解析逻辑。
\\n
n