我有一个程序,使用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很陌生,所以我真的不知道发生了什么。清除此内容时,我们将不胜感激。
谢谢!
答案 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);
}
}
您还应该避免吞咽异常。