如何为自定义扫描仪编写Java hasNext()函数

如何为自定义扫描仪编写Java hasNext()函数,java,io,Java,Io,我在internet上找到了许多用于快速Java IO的自定义扫描程序类,但没有一个提供自定义hasNext()方法实现,因此我不知道在输入大小可变时如何读取数据 以下是其中一个类的示例: class Reader { static BufferedReader reader; static StringTokenizer tokenizer; /** call this method to initialize reader for InputStream */ static void in

我在internet上找到了许多用于快速Java IO的自定义扫描程序类,但没有一个提供自定义hasNext()方法实现,因此我不知道在输入大小可变时如何读取数据

以下是其中一个类的示例:

class Reader {
static BufferedReader reader;
static StringTokenizer tokenizer;

/** call this method to initialize reader for InputStream */
static void init(InputStream input) {
    reader = new BufferedReader(
                 new InputStreamReader(input) );
    tokenizer = new StringTokenizer("");
}

/** get next word */
static String next() throws IOException {
    while ( ! tokenizer.hasMoreTokens() ) {
        //TODO add check for eof if necessary
        tokenizer = new StringTokenizer(
               reader.readLine() );
    }
    return tokenizer.nextToken();
}

static int nextInt() throws IOException {
    return Integer.parseInt( next() );
}

static double nextDouble() throws IOException {
    return Double.parseDouble( next() );
}
}

我怎么能自己写呢?谢谢。

不幸的是,BufferedReader没有一个
hasNext()
函数,但它包含一个
ready()
函数,这是一个布尔函数,告诉您是否有要读取的输入,您可以在这里找到它

因此,如果您想添加到您提到的类中,它将如下所示:

static boolean ready() throws IOException {return reader.ready();}
但是,如果输入不存在,请小心。
ready()
将返回false