Java NextBoolean() 从文本文件中读取

标签 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.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

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

最佳答案

您错过了对 nextLine 的调用在 nextBoolean 之后.
nextBooleannextInt方法不会读取您的行的 lineFeed,它会在读取 boolean 后立即停止或 int .

您检索到 name直接调用nextLine并且您期望 "Fred"而是得到一个空字符串,因为您仍然在同一行。 “Fred”实际上将分配给 breed你的阅读被破坏了。

关于Java NextBoolean() 从文本文件中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35687857/

相关文章:

ssl - Selenium Webdriver SSL 证书主机名不匹配问题

ajax - 如何通过laravel中的ajax调用发送csrf token ?

java - "Wrong"在 Java 中使用 if 与三元运算符时的返回类型

opencv - 如何为 DataGenerator keras 使用自定义图像加载器?

android - 无法从BasicCookieStore转换为CookieStore

iOS : mismatched translation

java - JPanel中的JButton占用太多空间

带删除的 Java 类型推断

java - android应用程序中的JSON解析

java - 基于属性文件中属性的 Spring Import 资源 - 不使用 spring 配置文件 - 条件上下文加载