【问题标题】:Input mismatch Exception error with scanner扫描仪输入不匹配异常错误
【发布时间】:2014-05-11 02:39:23
【问题描述】:

所以我昨天运行了这个程序,但不小心在 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 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 即宠物名。

代码是:

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");}

txt文件为:

8
hopper
2003
kangaroo
555
Melody_harper
ketty
2009
cat
44
Kitty_katz
Spot
2005
Dog
333
Dottie_Marks
Johnny
2008
cat
111
Misty_waters
Stripper
2011
sckunk
432 
Oddie_sweet
Edward
1995
Horse
630
Frieda_gelding
Casper
1998
snake
88
Bo_constricter
boots
2005
Horse
987
Ida_Shuman

我无法更改文件格式以更好地阅读。

请注意,我已尝试将 java 文件本身恢复到此事件之前的前一个时间,但它仍然无法运行并给出相同的错误。我还重新安装了 Netbeans。

【问题讨论】:

  • 第107行是哪一行?
  • 顺便说一下,这个问题与IDE完全无关。看起来您更改了文件中的某些内容,这就是为什么它不再起作用
  • 我在生日时收到错误
  • 无论如何,您的文件中没有新的空行吗?
  • 可能在最后,但我走到最后并删除了所有空白空间

标签: java debugging text java.util.scanner


【解决方案1】:

如果您将所有数据类型更改为 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);
                }

您将获得所需的输出和所需的数据类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 2023-03-13
    • 2012-07-01
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多