我需要从标准输入中读取。我对BufferedReader并不熟悉,到目前为止只使用过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);
}
第二次输入后发生错误。请帮忙。
答案 0 :(得分:5)
BufferedReader#readLine()
方法不会读取行尾的换行符。因此,当您拨打readLine()
两次时,第一个会读取您的输入,第二个会读取第一个留下的newline
。
这就是为什么它会跳过你提供的输入。
您可以使用BufferedReader#skip()
在readLine
中的每for loop
后跳过换行符。