0

while ループ (条件は ) を使用してファイルから行を (2 行で)読み取り、ファイルから読み取った JSON をbufferedReader.readLine()!=null割り当てるプログラムがあります。 read は null ではなく、正規表現とは一致しません) 次に、その新しい JSON をファイルに追加する必要がある JSON に対して何らかの関数を実行します。myJSONObjectif(bufferedReader.readLine()!=null&&!bufferedReader.readline.matches(DELETE_REGEX))

私はこれをいくつかの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 で終了します (プログラムは通常どおり閉じられます)。

どうしてこれなの?「続行」またはキャッチブロックの近くにはありません。

2 行目を削除すると、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 に答える