使用java文本文件中的错误数据

使用java文本文件中的错误数据,java,Java,我正在编写一个程序,读取一个txt文件,然后输出好数据和坏数据的数量,好数据是任何非负整数,坏数据是任何其他数据。 但是,如果我的程序遇到字符串,我不确定如何使用并移动到下一段数据。在遇到int时循环检查: import java.io.*; import java.util.*; public class DemoEx { public static void main(String[] args) throws IOException { Scanner in =

我正在编写一个程序,读取一个txt文件,然后输出好数据和坏数据的数量,好数据是任何非负整数,坏数据是任何其他数据。
但是,如果我的程序遇到字符串,我不确定如何使用并移动到下一段数据。

在遇到int时循环检查:

import java.io.*;
import java.util.*;

public class DemoEx {
    public static void main(String[] args) throws IOException {
        Scanner in = new Scanner(new FileReader("BP.txt"));

        int badData = 0;
        int goodData = 0;

        while (in.hasNext()) {
            try {
                int value = in.nextInt();
                if (value < 0)
                    throw new BPIllegalValueException("value cannot be less than zero");
                else goodData++;
            } catch (InputMismatchException ex) {
                // Consume badData
                badData++;
            } catch (BPIllegalValueException ex) {
                badData++;
            }
        }
        System.out.println("gooddata" + goodData);
        System.out.println("baddata" + badData);
    }
}

public class BPIllegalValueException extends Exception {
    BPIllegalValueException(String message){
        System.out.println(message);
    }
}

你说的消费是什么意思?你很可能想升级到另一个令牌。阅读文档后,您会得到以下答案:


下一个方法将允许您转到下一个令牌…

将其作为字符串读入。如果它与数字0-9+匹配,那么它是好的。否则就不好了。请格式化代码,使用缩进和更少的空行。现在的代码很难读懂。您似乎已经在使用无法在catch块成功解析为整数的字符串了?
if (in.hasNextInt()) {
    ... all
} else {
    ++badData();
    in.next();
}