大家好,我尝试从文本文件中读取这些错误:

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:864)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at application.Test.main(Test.java:27)


通过尝试找出问题所在,我认为它是nextBoolean(),当我删除它时,我没有得到任何错误。

这是我的代码:

package application;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Scanner;

    public class Test {

        public static void main(String[] args) throws FileNotFoundException {
            // TODO Auto-generated method stub

            int age = 0;
            String type = null, name = null, breed = null, desc = null;
            boolean male = false;

            File file = new File("animals.txt");
            Scanner kb = new Scanner(file);

            while (kb.hasNext()) {

                age = kb.nextInt();
                kb.nextLine();
                type = kb.nextLine();
                male = kb.nextBoolean();
                name = kb.nextLine();
                breed = kb.nextLine();
                desc = kb.nextLine();

                Animal animal = new Animal(age, type, male, name, breed, desc);

                AnimalList.add(animal);

            }
            AnimalList.printAnimalList();
            kb.close();
        }


    }


这是文本文件的内容

6
Dog
false
Fred
Jack Rusell
dog is in poor condition
5
Cat
false
James
Russian blue
Good
9
Cat
true
Felix
Tabby
Cat in good condition
4
Bird
true
chirpy
Parrot
Parrot in good condition


我将不胜感激。在过去的几个小时里,我一直在搜寻Google,但找不到任何解释。

最佳答案

您在nextLine之后错过了对nextBoolean的呼叫。

nextBooleannextInt方法不会读取您的行的lineFeed,它会在读取booleanint之后立即停止。

您可以直接通过调用name来检索nextLine,但您希望输入“ Fred”,但会得到一个空字符串,因为您仍在同一行。实际上,“ Fred”将分配给breed,并且您的阅读已损坏。

07-26 09:29