基于Scanner处理输入
测试代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
Scanner in = new Scanner(System.in);
long start = System.currentTimeMillis();
while (true) {
String s = in.nextLine();
if (s.equals("-1"))
break;
}
long end = System.currentTimeMillis();
System.out.println("Scanner:" + (end - start) + "ms");
// start = System.currentTimeMillis();
// String s1 = bf.readLine();
// end = System.currentTimeMillis();
// System.out.println("buff:" + (end - start) + "ms");
}
}
测试平台:
PTA
测试样例:
1000个简单输入,遇到-1结束
测试结果:
基于BufferReader和InputStreamReader处理输入
测试代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
Scanner in = new Scanner(System.in);
long start = System.currentTimeMillis();
while (true) {
String s = bf.readLine();
if (s.equals("-1"))
break;
}
long end = System.currentTimeMillis();
System.out.println("Scanner:" + (end - start) + "ms");
// start = System.currentTimeMillis();
// String s1 = bf.readLine();
// end = System.currentTimeMillis();
// System.out.println("buff:" + (end - start) + "ms");
}
}
测试样例与上面的一样
测试结果:
简单的总结:
在PTA上使用BufferReader结合InputStreamReader处理输入相比Scanner处理输入,在输入数据比较大时,前者速度为后者的十几倍甚至更多。(此本人仅在pta执行了一次后得出的结论,权当参考)