0

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

我在一些 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很陌生,所以我真的不知道发生了什么。任何帮助将不胜感激。

谢谢!

4

1 回答 1

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

您还应该避免吞咽异常。

于 2012-09-27T12:38:37.873 回答