这是我用来简化使用BufferedReader获取输入的方法,我的输入是“10 12 \ n”,其余代码使用Integer.parseInt(//return value)
中此函数的返回值,并且可以使用值“10”但它得到NumberFormatException
为12,因为包含换行符。
当我在if
之前专门提出append()
语句时,我不明白它是如何被包含的。
private static String getInput(BufferedReader br) {
StringBuilder sb = new StringBuilder();
char x = 0;
try {
x = (char) br.read();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
while (x != ' ' && x != '\n' && x != -1) {
if (x != ' ' && x != '\n' && x != -1)
sb.append(x);
try {
x = (char) br.read();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return (sb.length() == 0) ? null : sb.toString();
}
答案 0 :(得分:0)
将其全部读入String,然后调用trim()
,然后解析String。
或者,您可以使用Character.isLetterOrDigit(x)
验证输入char x
。
答案 1 :(得分:0)
为什么不使用Scanner
?它为您处理空白,甚至可以包裹Reader
。
Scanner scanner = new Scanner( br);
while(scanner.hasNextInt()){
int myInt = scanner.nextInt();
}
//should probably put close in a finally block
scanner.close();