Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.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 NextBoolean()从文本文件读取_Java_Mismatch - Fatal编程技术网

Java NextBoolean()从文本文件读取

Java NextBoolean()从文本文件读取,java,mismatch,Java,Mismatch,嘿,伙计们,我在尝试读取文本文件时遇到以下错误: 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.

嘿,伙计们,我在尝试读取文本文件时遇到以下错误:

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

如果有任何帮助,我将不胜感激。我在谷歌上搜索了几个小时,找不到任何解释。

你应该添加行
kb.nextLine()
after
male=kb.nextBoolean()
强制
扫描仪
转到下一行


否则,
name
在同一行的布尔值之后有一个值(为空),所有其他值都会通过移位读取。

nextBoolean
之后缺少对
nextLine
的调用

nextBoolean
nextInt
方法不会读取行的换行符,它将在读取
boolean
int
后立即停止


通过调用
nextLine
直接检索
名称
,预期为“Fred”,但得到的却是空字符串,因为您仍然在同一行上。“Fred”实际上将被分配到
breed
,并且您的读数已损坏。

您可以尝试在每次
下一次调用时打印您正在阅读的内容…()
因此,如果您的输入按您的意愿排列,您可以感谢我之前尝试过的,因为我认为这可能与新的字符行有关,但它不起作用。我又试了一次,结果成功了。无论如何,wtf非常感谢。如果时间再长的话,我就要绞尽脑汁了。但这在早些时候不起作用,但在你推荐后我又试了一次