如何为自定义扫描仪编写Java hasNext()函数
我在internet上找到了许多用于快速Java IO的自定义扫描程序类,但没有一个提供自定义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
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