2011-10-28 9 views
0

以下に示す関数に何か間違いはありますか?デバッガでこのコードを実行中に見つけた唯一のバグは "java.lang.NullPointerException:0"です。私は "このエラーの原因は何か"を突き止めるのに最後の多くの時間を無駄にしました。J2ME RecordStoreエラー:java.lang.NullPointerException:0 - 以下のコードで何が間違っています

RecordStore.openRecordStore(REC_STORE, true); 

これに:この

public String[] addRECORD(String mydata){ 
      String[] output = null; 
     try { 
      RecordStore rs = null; 
      String sb = null; 
      RecordStore.openRecordStore(REC_STORE, true); 
      if (mydata.equals("Logged")) { 
         byte[] recData = new byte[5]; 
         int len; 
         for(int i = 1; i <= rs.getNumRecords(); i++){ 
          if(rs.getRecordSize(i) > recData.length){ 
          recData = new byte[rs.getRecordSize(i)]; 
          } 
          len = rs.getRecord(i, recData, 0); 
          sb += new String(recData, 0, len); 
         } 
       if (sb != null) { 
        output[0] = "rexists"; 
        output[1] = sb.trim(); 
       } else { 
        output[0] = "notlogged"; 
        output[1] = sb.trim(); 
       } 
      }else{ 
        byte[] rec = mydata.getBytes(); 
        try{ 
        rs.addRecord(rec, 0, rec.length); 
        }catch (Exception e){} 
        output[0] = "radded"; 
        output[1] = mydata; 
       } 
       rs.closeRecordStore(); 
     } catch (RecordStoreException ex) { 
      responder(ex.getMessage()); 
     } 
      return output; 
    } 
+0

エラーが発生した行は何ですか? – millimoose

答えて

1

最初のNULL関数に渡された文字列がnullの場合、ポインタの例外は、ここに来ることができる

if (mydata.equals("Logged")) { 

これをif ("Logged".equals(myData)) {に変更してください第二にNULLポインタ例外がここに来ることができ

、あなたは配列出力であるため

for(int i = 1; i <= rs.getNumRecords(); i++){ 

初期化RS

第三にNULLポインタ例外がここ

output[0] = "rexists"; 
output[1] = sb.trim(); 

来ることができるヌルオブジェクト上で機能を呼び出すことはできません初期化されていない、配列を初期化するString [] output = new String[2]

+0

Zohaibありがとう...あなたは私を保存しました(今働いています...)私は配列を初期化しましたが、nullに変更しました... – Krishna

0

変更

rs = RecordStore.openRecordStore(REC_STORE, true); 
+0

ありがとう@アーバート、私はこれを知らなかった... – Krishna

関連する問題