2011-10-28 22 views
0

下面顯示的函數有什麼問題嗎?在調試器中運行此代碼時發現的唯一錯誤是「java.lang.NullPointerException:0」。我最後花了好幾個小時弄清楚「是什麼原因導致了這個錯誤」,有人請求幫助。J2me RecordStore錯誤:java.lang.NullPointerException:0 - 下面的代碼有什麼問題

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

第一個空指針異常可以到這裏來,如果傳遞給函數的字符串爲空

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

將其更改爲if ("Logged".equals(myData)) {

第二個空指針異常可以到這裏來,你不能空對象上調用函數

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

初始化RS

三空指針異常可以來這裏

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

因爲陣列輸出未初始化,將數組初始化爲String [] output = new String[2]

+0

謝謝Zohaib ...你保存了我(它現在工作)...我做了初始化數組,但將其更改爲空... – Krishna

0

更改此:

RecordStore.openRecordStore(REC_STORE, true); 

要這樣:

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

謝謝@albert,我沒有意識到這一點... – Krishna