2016-03-30 15 views
0

私のコードでこのエラーが発生し続けています。数字ではない整数と関係がありますが、これを修正する方法がわかりません。私はこれが非常に基本的だと確信していますが、私は可能ですので、私は可能な助けを感謝します。これは途中でdoループで行われなければなりません。私はそれがしばらくすると良いことを知っています。java.lang.NumberFormatException:null - doループ内

ここには、必要な情報を含むコードのビットがあります。ありがとうございました。

String firstName, surname, id; 
    int luckynumber, lockernumber, grade, age; 
    char grade2; 

    try { 
     BufferedReader filein = new BufferedReader(new FileReader(new File(
       "studentdetails.txt"))); 
     do { 
      id = filein.readLine(); 
      firstName = filein.readLine(); 
      surname = filein.readLine(); 
      age = Integer.parseInt(filein.readLine()); 
      grade = Integer.parseInt(filein.readLine()); 
      lockernumber = Integer.parseInt(filein.readLine()); 
      age = 2010 - age; 

     } while (id != null); 

     filein.close(); 


    } catch (FileNotFoundException fnfe) { 
     System.out.println(fnfe); 
    } catch (NumberFormatException nfe) { 
     System.out.print(nfe); 
    } catch (IOException e) { 
     System.out.print(e); 
    } 

編集 - これはではなく、約10他の人と読まれるファイルです。各単語/数字は、ファイル内の独自の行にあります。あなたがのためのIDを確認することで、ファイルの終わりに達した場合は、チェックしている

do { 
    id = filein.readLine(); 
    //do more stuff 
} while(id != null); 

:また、NumberFormatExceptionがあなたのケースを考えてみ引き起こす可能性空行が含まれていないファイルを想定し

261 
Patricia 
Halangahu 
1974 
92 
56 
+0

私たちはあなたが読んでいるファイルの内容を知らない。 – Stultuske

+1

を確認してください。 'studentdetails.txt'に内容のサンプルを追加できますか? – Matthijs

+0

'studentdetails.txt'と' stackTrack'が最初に追加されました –

答えて

0

ヌルです。しかし、idがヌルなら、あなたはまだ反復を完了しており、パースは失敗します(すでにファイルの最後に達していますので、age = Integer.parseInt(filein.readLine());はどうしたらいいですか?)。

どのように解決しますか? 1つの方法は、IDを読んだ直後に小切手を追加することです:

do { 
    id = filein.readLine(); 
    if(id == null) { 
    //end of stream, stop iteration 
    break; 
    } 

    //do more stuff 

} while(true); //you're breaking the loop from the inside already 
+0

代わりに "7" "7" – Stultuske

+0

@Stultuskeはい可能ですが、私はただちに問題に答えるだけで、意図的にすべてのエラーをカバーしていません(たとえば、 'id'の行があるかもしれませんが、それ以降の行はありません - > "壊れた"ファイル)。 – Thomas

+0

問題を修正し、まだ正しい出力を得ているおかげで、本当に感謝してくれてありがとう。 – michael