1

NullPointerException で別の問題が発生しています。今回はハイライトtellen = telno.length()です。あなたが尋ねる前に:

  • その変数に読み込まれるテキスト ファイルにデータがあります。
  • すべての変数が初期化されました。
  • Buffered Reader も初期化されます。
  • ここに私のコードのスニペットがあります:

    while((telno = br.readLine()) != null){
        name = br.readLine();
    
        surname = br.readLine();
    
        company = br.readLine();
    
        house = br.readLine();
    
        street = br.readLine();
    
        locality = br.readLine();
    
        postcode = br.readLine();
    
        telno = br.readLine();
        tellen = telno.length();
    
        mobno = br.readLine();
    
        sep = br.readLine();
    
        if(tellenx > tellen) tellen = tellenx;
    
    
    }
    

助けてください。ありがとう。テキストファイル:

  • 名前
  • 会社
  • 地域性
  • 電話番号
  • 携帯電話番号

問題は電話 (tellen) にあります これらの名前はすべて架空のものであり、このプログラムは電話帳です

George
Farrugia
Some Company 
9, Flowers
Quail Street
Bubaqra
BBQ 1569
21369854
79825643
--------------------------------------------
Paul
Zammit

9
Bird Street
St. Julians
STJ 0000
21545796
79745247
--------------------------------------------
Peter
Spiteri
Oak Company
Trees
Birch Street
Oakgrove
TRE 3333
21323323
99323323
--------------------------------------------

後の空白Zammitはスペースです。このような問題を回避するために、データがない場合に配置されます。

4

4 に答える 4

1

このエラーは11、1つの行while loopを読み取る代わりに、10行のみを読み取る必要があるために発生します。

したがって、ある時点でbr.readLine()が返されnullます。

必要に応じてファイルを読み取る必要があります。つまり、1回の実行(whileループ)で10行を読み取り、次に10行を読み取ります。

while((telno = br.readLine()) != null){ // first line
    name = br.readLine();   // secondline I think this should be first line

    surname = br.readLine();

    company = br.readLine();

    house = br.readLine();

    street = br.readLine();

    locality = br.readLine();

    postcode = br.readLine();

    telno = br.readLine();
    tellen = telno.length();

    mobno = br.readLine();

    sep = br.readLine();  // eleventh line

    if(tellenx > tellen) tellen = tellenx;


}
于 2013-01-31T18:58:01.893 に答える
1

ほとんどの場合、ファイルの終わりで、nullbufferedReader.readLine()が返され、null のインスタンスでメソッドを呼び出したところ、NPEが発生しました。

于 2013-01-31T18:09:03.777 に答える
0

null check.Defintel なしで readLine() を使用して読み取ろうとしていると思いますが、NPE が発生します。

于 2013-01-31T18:11:03.953 に答える
0

null 参照があるかどうかを確認する if ステートメントを追加することは、コード内のエラーを確認するための良い方法です。

擬似コードの例は次のとおりです。

   telno = br.readLine();

   if(telno == null)
       System.out.println("this will cause null pointer exception  "+ telno.length()); 
   else
       tellen = telno.length();
于 2013-01-31T18:22:48.980 に答える