限制换行java上的EOF

限制换行java上的EOF,java,newline,bufferedreader,eof,Java,Newline,Bufferedreader,Eof,我通过提问获得了Java中适当的EOF标准,它做得很好。但是,当程序要求在每个输入案例后输入一个空行时,问题就出现了。以下代码适用于EOF String line; BufferedReader read = new BufferedReader(new InputStreamReader(System.in)); try { while((line = read.readLine()) != null){ n = Integer.

我通过提问获得了Java中适当的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()机制

如果我有一个不会在空白行输入时终止或引发异常的代码,那就太好了。

您可以检查

"".equals(line.trim())
在尝试将其转换为整数之前

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

试试这个

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) {} 

可以在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) {} 

最好的方法可能是在做任何事情之前检查输入的长度。因此:

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

只要检查一下线的长度就行了?如果(line.length()>0){做任何事;}它就像一个符咒一样工作!!!应该是一个答案!!!我把它添加为一个答案:)请将其标记为已接受或投赞成票!行中可能有多个空格,如
在本例中???@MiyaG好吧,我添加了一些内容来处理这个问题,但OP确实说了空白新行…此外,由于我正在为编程竞赛解决问题,Scanner在大多数情况下都会以很小的速度结束。我添加了行
行.replaceAll(“,”)但它不工作。如果我放一个空格并按enter键,我得到的是相同的
NumberFormatException
。@TahmidNips您能简单地澄清一下吗?更具体地说,我想要一个以适当方式支持EOF的Java代码。此代码正在解决此问题。但如果我输入一个空格,然后按enter键,就会抛出NumberFormatException。所以我需要一个Java模板,它在执行EOF时不会提供任何类型的异常@MiyaGit正在工作,但如果有空格,然后按enter键,它仍会继续给出NumberFormatException。所以这个问题还没有解决。基本上,我想要一个在在线程序提交中支持EOF的java代码。我以前的代码工作正常,但不支持EOF。为了澄清这一点,我正在研究每个测试用例后的空白行。。这是我的最终代码,包括您建议的修改@亚历克斯K