这是我用来简化使用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();
}

最佳答案

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

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

09-10 08:12
查看更多