我需要从标准输入中读取数据。我对BufferedReader不是很熟悉,目前只用过Scanner。Scanner(或者可能是我的代码内部问题)一直给我返回TLE错误。现在的问题是,BufferedReader似乎跳过了一些行,我一直收到NumberFormatException。
这是我的代码:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int cases = Integer.parseInt(reader.readLine());
for(int i = 0; i < cases && cases <= 10; i++) {
int numLines = Integer.parseInt(reader.readLine());
String[] lines = new String[numLines + 1];
HashSet<String> pat = new HashSet<String>();
for(int j = 0; j < numLines && j <= 10; j++) {
String l = reader.readLine();
String patternStr = "\\W+";
String replaceStr = "";
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(l.toString());
String m = matcher.replaceAll(replaceStr);
lines[j] = m;
getPatterns(m, pat);
System.out.println(m);
}
第二次输入后发生了错误,请帮忙解决。
reader.readLine().trim()
。 - Nikolay KuznetsovBufferedReader
读取,直到出现null
。 - Nikolay KuznetsovBufferedReader
比Scanner
更快。来自官方文档:"如果没有缓冲,每次调用read()或readLine()都可能导致从文件中读取字节,转换为字符,然后返回,这可能非常低效。" - xdavidliu