Java 当我使用scanner sc.nextDouble()时,为什么会出现输入不匹配异常
我想从Java 当我使用scanner sc.nextDouble()时,为什么会出现输入不匹配异常,java,java.util.scanner,inputmismatchexception,Java,Java.util.scanner,Inputmismatchexception,我想从txt文件中读取数据,但调用nextDouble()方法时会得到inputmaschException。尽管我正在使用useLocale方法,但它不起作用 txt文件的第一行是:1;forname;1.9 public class SimpleFileReader { public static void main(String[] args){ readFromFile(); } public static void readFromFile(){
txt
文件中读取数据,但调用nextDouble()
方法时会得到inputmaschException
。尽管我正在使用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
修复了问题()。如果要解析1.9
,请使用Locale.US
而不是Locale.FRENCH
()
代码中的第二个问题是使用
\\n
作为分隔符。您应该使用一个反斜杠,否则包含n
的单词将破坏您的解析逻辑。我想使用小数点而不是逗号,我已经用Locale(Locale.US)重写了此代码,并尝试了Locale.ENGLISH,但是它们都不起作用。@Bbeni这是一个不同的问题-在一行中有n
出现异常。请查看编辑。txt文件错误。我必须将行尾字符从\r替换为\n。它正在工作。谢谢你的帮助