1

这是我用来简化使用 BufferedReader 获取输入的方法,我的输入是“10 12\n”,其余代码使用此函数的返回值,Integer.parseInt(//return value)并且能够使用值“10”这样做,但是它得到带 12的 a NumberFormatException,因为包含换行符。

我不明白当我if在之前专门放一个 -statement时它是如何包含在内的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();
}
4

2 回答 2

0

将其全部读入一个字符串,然后调用trim(),然后解析该字符串。

或者,您可以使用Character.isLetterOrDigit(x)来验证您的输入char x

于 2013-08-28T18:33:14.117 回答
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();
于 2013-08-28T18:35:37.333 回答