Java 扫描仪输入不匹配异常错误
因此,我昨天运行了这个程序,并意外地在netbeans IDE 7.4中运行了调试器控制台,而且从该程序停止工作以来。我不知道它在我的代码中发生了什么变化 以下是错误:Java 扫描仪输入不匹配异常错误,java,debugging,text,java.util.scanner,Java,Debugging,Text,Java.util.scanner,因此,我昨天运行了这个程序,并意外地在netbeans IDE 7.4中运行了调试器控制台,而且从该程序停止工作以来。我不知道它在我的代码中发生了什么变化 以下是错误: Petname: Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:909) at java.util.Scanner.next(Scanner.java:1530) at
Petname:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at veterinarian.Veterinarian.main(Veterinarian.java:107)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)
我添加了一个简单的println语句,以查看存储了什么以及它的null,即petname
代码是:
public static void main(String[] args) {
boolean pick = false;
//***************************add file*******************************************
File file = new File("VetList.txt");
//*********************declare ojbects******************************************
try{
Scanner read = new Scanner(file);
int fix = read.nextInt();
do{
for(int x = 0; x < fix; x++){
String petname = read.nextLine();
System.out.println("Petname: " + petname);
int birthday = read.nextInt();
String species = read.next();
double bill = read.nextDouble();
String owner = read.next();
Veterinarian work = new Veterinarian(petname, birthday, species, bill, owner);
Veterinarian.Vet.add(work);
}
}
while(read.hasNextLine() == pick);
}
catch(FileNotFoundException FNF){
System.err.format("File not found");}
我无法更改文件格式以更好地阅读
请注意,我已经尝试将java文件本身还原到事件发生之前的某个时间,但它仍然不会运行,并给出相同的错误。我还重新安装了Netbeans。如果您将所有数据类型更改为
String
,并将代码更改为类似以下内容,则进行调试
String petname = read.nextLine();
System.out.println("Petname: " + petname);
String birthday = read.next();
String species = read.next();
String bill = read.next();
String owner = read.next();
System.out.println("BirthDay" + birthday);
System.out.println("Name"+petname);
System.out.println("BIll" + bill);
System.out.println("Speci" + species);
System.out.println("Owner " + owner);
您应该得到如下输出
Petname:
BirthDayhopper
Name
BIllkangaroo
Speci2003
Owner 555
这意味着您的生日是一个字符串,但您正试图存储为int。。这就是为什么它给出了例外。如果您将代码更改为以下
if (read.hasNext()) {
//if prevents NoSuchElementException
String petname = read.next();
System.out.println("Petname: " + petname);
int birthday = read.nextInt();
String species = read.next();
double bill = read.nextDouble();
String owner = read.next();
System.out.println("BirthDay" + birthday);
System.out.println("Name" + petname);
System.out.println("BIll" + bill);
System.out.println("Speci" + species);
System.out.println("Owner " + owner);
}
您可以得到所需的输出和所需的数据类型。哪一个是第107行?顺便说一下,问题与IDE完全无关。看起来你更改了文件中的某些内容,这就是为什么不再起作用。我在生日时收到错误只是通过任何方式,你的文件中没有新的空行吗?可能在结尾,但我在结尾删除了所有空白
if (read.hasNext()) {
//if prevents NoSuchElementException
String petname = read.next();
System.out.println("Petname: " + petname);
int birthday = read.nextInt();
String species = read.next();
double bill = read.nextDouble();
String owner = read.next();
System.out.println("BirthDay" + birthday);
System.out.println("Name" + petname);
System.out.println("BIll" + bill);
System.out.println("Speci" + species);
System.out.println("Owner " + owner);
}