我有一个程序,它使用while循环(条件为bufferedReader.readLine()!=null
)从文件中读取行(包含两行),为myJSONObject
分配一个从文件读取的JSON,然后我有一条if语句(if(bufferedReader.readLine()!=null&&!bufferedReader.readline.matches(DELETE_REGEX))
,如果这是真的(即,如果我们读取的行不是null,并且我们不匹配正则表达式),然后对JSON执行一些函数,该函数应该将新的JSON附加到文件中。
我把这个放在一些试抓块里。看起来有点像:
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终止(程序正常关闭)
为什么会这样?它不会接近"继续"或catch块。
如果我删除第二行,由于String Reader的第50行,我会得到一个NullPointerException,但我没有使用StringReader
(我尝试过导入它,但eclipse黄色下划线将其删除,这不会改变任何内容)。调试时,它会弹出一个StringReader.<init>(String) line: 50
的选项卡,只显示"找不到源"。
我对Java还很陌生,所以我真的不知道发生了什么。如有任何帮助,我们将不胜感激。
谢谢!
每次调用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);
}
}
你也应该避免吞下异常。