我在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()机制。
如果我的代码没有终止或在空行输入上抛出异常,那就太棒了。
答案 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) {}