Java终止于if语句,退出值为0

时间:2012-09-27 12:32:43

标签: java bufferedreader terminate filewriter stringreader

我有一个程序,使用while循环从一个文件(带两行)中读取行(条件为bufferedReader.readLine()!=null),从文件中分配myJSONObject一个JSON读取,然后我有一个如果是statment(if(bufferedReader.readLine()!=null&&!bufferedReader.readline.matches(DELETE_REGEX))并且如果那是真的(即如果我们读取的行不是null,并且我们与正则表达式不匹配)则在JSON上执行一些函数,该函数应该将新的JSON附加到文件中。 / p>

我在一些try-catch块中有这个。它看起来有点像:

try{
    openFiles;
    while(buff.readLine()!=null){
          try {
              instatiateAndUseJSONParser;
              if(bufferedReader.readLine()!=null
                    &&!bufferedReader.readline.matches(DELETE_REGEX)) 
              {doSomeStuff;}
              else
              {continue;}
          } catch (AllTheExceptions e){e.printStackTrace}
     }
     closeFiles;
}catch(SomeMoreExceptions e){e.printStackTrace}

当我运行时,这是获取iff语句,然后以退出值终止:0(程序正常关闭)

这是为什么?它不会靠近'继续'或捕获块。

如果我删除第二行,由于String Reader的第50行,我得到一个NullPointerException,但我没有使用StringReader(我尝试导入它,但是eclipse黄色 - 强调它并且这不会改变任何东西)。调试时,会弹出StringReader.<init>(String) line: 50的标签,只显示“未找到来源”。

我对Java很陌生,所以我真的不知道发生了什么。清除此内容时,我们将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:2)

每次调用readLine()时,它都会读取一个新行。因此,您可以在当前代码中每次迭代读取3行。您应该将第一次调用的结果分配给变量,并使用此变量:

String line = null;
while ((line = buff.readLine()) !=null) {
    try {
        instatiateAndUseJSONParser;
        if (line.matches(DELETE_REGEX)) {
            doSomeStuff;
        }
    } 
    catch (AllTheExceptions e){
        throw new RuntimeException(e);
    }
}

您还应该避免吞咽异常。