Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我使用scanner sc.nextDouble()时,为什么会出现输入不匹配异常_Java_Java.util.scanner_Inputmismatchexception - Fatal编程技术网

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。它正在工作。谢谢你的帮助