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()
aftermale=kb.nextBoolean()
强制扫描仪
转到下一行
否则,
name
在同一行的布尔值之后有一个值(为空),所有其他值都会通过移位读取。在nextBoolean
之后缺少对nextLine
的调用
nextBoolean
和nextInt
方法不会读取行的换行符,它将在读取boolean
或int
后立即停止
通过调用
nextLine
直接检索名称
,预期为“Fred”,但得到的却是空字符串,因为您仍然在同一行上。“Fred”实际上将被分配到breed
,并且您的读数已损坏。您可以尝试在每次下一次调用时打印您正在阅读的内容…()
因此,如果您的输入按您的意愿排列,您可以感谢我之前尝试过的,因为我认为这可能与新的字符行有关,但它不起作用。我又试了一次,结果成功了。无论如何,wtf非常感谢。如果时间再长的话,我就要绞尽脑汁了。但这在早些时候不起作用,但在你推荐后我又试了一次