为了从STDIN
读取输入,我总是使用Scanner
个对象。最近我读到了BufferedInputStream
here,BufferedInputStream是读取输入的最快方式。在Scanner
我们有各种方法(阅读integer
nextInt()
,阅读byte nextByte()
,阅读string next()
等。)
目前我正在阅读一些字符串(最多100000个字符)和一些整数。根据这些整数,我进一步运行我的for循环,它从STDIN
获取输入。下面是我到目前为止使用的代码片段 -
Scanner sc = new Scanner(System.in);
int numOfStr = sc.nextInt();
String inputStr[] = new String[numOfStr];
for (int i = 0; i < numOfStr; i++) {
inputStr[i] = sc.next();
}
}
但是对于BufferedInputStream
,我们只有read()
来读取输入。那么我如何区分输入?有人可以写下相当于上述BufferedInputStream
的{{1}}代码吗?我应该使用Scanner
类来标记我从StringTokenizer
获得的数据吗?这不会使整个内容(从read()
读取输入)比STDIN
更慢吗?
答案 0 :(得分:1)
BufferedInputStream不解析任何数据,只读取数据。您可以将缓冲的阅读器传递到扫描仪类并从那里解析它。
答案 1 :(得分:0)
查看Java教程中的chapter on streams。它描述了不同类型的流,它们的用途和用法。
但是,我不太明白为什么在读取用户输入时读取操作必须很快。与用于从键盘读取输入的方法相比,用户输入的速度要慢得多(数量级要慢)。