在换行符java上限制EOF

时间:2014-11-28 18:38:40

标签: java newline bufferedreader eof

我在Java中使用this问题获得了正确的EOF标准,并且它运行良好。但是当程序在每个输入案例之后需要输入空行时发生问题。以下代码适用于EOF。

    String line;
    BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
    try {
        while((line = read.readLine()) != null){
            n = Integer.parseInt(line);
        }
    }
     catch (IOException e) {} 

但问题是,我要解决一个问题,在输入每个案例后,输入一个空白的新行。结果我得到一个NumberFormatException,这也是预期的。我已经尝试了所有我能做的事情,包括try-catch()机制。

如果我的代码没有终止或在空行输入上抛出异常,那就太棒了。

4 个答案:

答案 0 :(得分:1)

您可以查看是否

"".equals(line.trim())

在尝试将其转换为整数之前。

但更好的方法是使用Scanner,然后使用Scanner.nextInt()获取下一个令牌。这将自动处理空白。

答案 1 :(得分:1)

执行此操作的最佳方法可能是在执行任何操作之前检查输入的长度。所以:

if(line.length() > 0) {
    //do whatever you want
}

答案 2 :(得分:0)

试试这个。

String line;
    BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
    try {
        while((line = read.readLine()) != null){
          line.replaceAll(" ","");
               if(line.length()>0){
            n = Integer.parseInt(line);
                     }
        }
    }
     catch (IOException e) {} 

答案 3 :(得分:-1)

您可以在while循环中使用try-catch块,如果捕获异常,则继续进行下一次迭代。它不是最好的解决方案,但对于你的情况它应该有用。

String line;
BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
try {
    while((line = read.readLine()) != null) {
        try {
            n = Integer.parseInt(line);
            //other stuff with n
        } catch (NumberFormatException e) {
              continue; // do nothing, and move on to the next line
        }
    }
}
 catch (IOException e) {}