Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.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 为什么在读取多行文本文件时会出现InputMismatchException?_Java - Fatal编程技术网

Java 为什么在读取多行文本文件时会出现InputMismatchException?

Java 为什么在读取多行文本文件时会出现InputMismatchException?,java,Java,我用它来读取文本文件。文本文件本身: public static void main(String[] args) { try { Scanner scan = new Scanner(new File("members.txt.txt")); while (scan.hasNextLine()) { scan.useDelimiter(",");

我用它来读取文本文件。文本文件本身:

public static void main(String[] args) {
        try {
            Scanner scan = new Scanner(new File("members.txt.txt"));
            while (scan.hasNextLine()) 
            {
                scan.useDelimiter(",");
                String name = scan.next();
                int admin = scan.nextInt();
                int analyst = scan.nextInt();
                int creative = scan.nextInt();
                System.out.println("I am here");
                int finisher = scan.nextInt();

                System.out.println("name: "+name+"admin "+admin+"analyst "+analyst+"creative "+creative+"finisher "+finisher);                  
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
它会引发异常,我不知道为什么,但当文件看起来像这样时:

Mona,2,10,8,10
Morten,5,5,15,5
Lisa,12,8,2,8
Vanessa,20,5,1,4
Yoana,10,10,5,5
Krassimira,20,1,1,8
Baltmore,3,0,0,0
COca,4,1,5,20
Pasi,5,5,5,15
我的意思是,只要一行代码就行了。我真的很想得到一个好的答案,如果你注意到,例如,某些部分有5米 finisher的编号与名称粘在一起,代码的工作方式让我发疯

Mona,2,5,18,5Peter,10,8,0,12Jacob,2,5,18,3nikos
您扫描的第五个元素
5Peter
应该是
int

Mona,2,5,18,5Peter

但是它会得到一个
字符串。也许这就是问题所在。看起来
5
Peter
之间缺少一个逗号,因此它将两个元素作为一个元素,并尝试将它们视为
int
,但由于缺少逗号,因此会得到一个
字符串。

您已将分隔符定义为“,”。因为行间没有“,”字,扫描器将下一行的最后一个字和第一个字视为同一个字。

Mona,2,10,8,10 Morten,5,5,15,5 Lisa,12,8,2,8 Vanessa,20,5,1,4 Yoana,10,10,5,5 Krassimira,20,1,1,8 Baltmore,3,0,0,0 COca,4,1,5,20 Pasi,5,5,5,15第一次代码出现在多行上,第二次是大行。文本文件空间中的行是分隔的还是新行分隔的?从您的帖子中,似乎每一行都是空格分隔的。您使用的分隔符是“,”,但您的文件也包含行分隔符作为分隔符。为什么您的文件会更改其内容?你只是在读。因此,您应该将写入/更改文件的代码添加到question.public void writeToFile(){FileWriter output;try{output=newfilewriter(new file(fileMembers));for(int i=0;iint finisher = scan.nextInt();