StringTokenizer类主要用于分隔字符串,将一个String分成多个Token。
StringTokenizer(String str)
根据指定的字符串创建一个StringTokenizer对象,默认以 \t \r \n \f为分隔符。
StringTokenizer(String str, String delim)
根据指定的字符串创建一个StringTokenizer对象并指定分隔符。
StringTokenizer(String str, String delim, boolean returnDelims)
根据指定的字符串创建一个StringTokenizer对象并指定分隔符,以及是否返回分隔符。
int countTokens()
计算分隔的token数,相当于调用nextToken函数的次数。
boolean hasMoreTokens()
判断是否还有其他的Token,如果返回True,那么nextToken函数就会返回下一个Token。
String nextToken()
返回下一个Token。
实现一个比Scanner高效的解析类InputReader,当输入数据越多时,InputReader的效率比Scanner高很多。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Test {
static class InputReader{
private BufferedReader bufferedReader;
private StringTokenizer stringTokenizer;
InputReader(InputStream in){
bufferedReader = new BufferedReader(new InputStreamReader(in));
stringTokenizer = new StringTokenizer("");
}
public String next() throws IOException{
while(!stringTokenizer.hasMoreTokens()){
stringTokenizer = new StringTokenizer(bufferedReader.readLine());
}
return stringTokenizer.nextToken();
}
}
public static void main(String[] args) throws IOException {
InputReader inputReader = new InputReader(System.in);
String s = inputReader.next();
System.out.println(s);
}
}