2013-04-07 64 views
0

我有問題,這樣的代碼:的Android ArrayList的奇怪的空指針異常

for(int i2=0;i2<ftdata.size();i2++){ 
     System.out.println("FTDATASIZE: " +ftdata.get(i2)); // here pass and shows null 
     String test=ftdata.get(i2); // here gets Null Pointer Exception ???? 
     if(test.equals("null")){ 

     } 
    } 

的System.out顯示logcat的「FTDATASIZE:空」,但我得到的錯誤與該行「字符串測試= ftdata.get(I2 );」我沒有明白嗎?爲什麼我得到空指針異常?

04-07 05:42:36.309: I/System.out(12983): STDATASIZE: 1 
    04-07 05:42:36.309: I/System.out(12983): FTDATASIZE: 1 
    04-07 05:42:36.309: I/System.out(12983): FTDATASIZE: null 
    04-07 05:42:36.309: W/dalvikvm(12983): threadid=10: thread exiting with uncaught exception (group=0x40166560) 
    04-07 05:42:36.309: E/AndroidRuntime(12983): FATAL EXCEPTION: Thread-11 
    04-07 05:42:36.309: E/AndroidRuntime(12983): java.lang.NullPointerException 
    04-07 05:42:36.309: E/AndroidRuntime(12983): at soft.ProDb.distanceRunsMonthly(ProDb.java:22718) 
    04-07 05:42:36.309: E/AndroidRuntime(12983): at soft.ProDb.runsMonthly(ProDb.java:22593) 
    04-07 05:42:36.309: E/AndroidRuntime(12983): at soft.SHtmlM.exportALLHtml(StringaHtmlM.java:111) 
    04-07 05:42:36.309: E/AndroidRuntime(12983): at soft.ProDb$1.run(ProDb.java:12714) 
    04-07 05:42:36.309: E/AndroidRuntime(12983): at java.lang.Thread.run(Thread.java:1019) 

OK 固定

這對我的作品

if(ftdata.size()==1&& ftdata.get(0)==null){ 
     ftdata=stdata; 
    } 

只是想測試是否ftdata.get(0)爲空或不是

+0

請從logcat發佈堆棧跟蹤... – Karakuri 2013-04-07 02:55:58

+0

ftdata.get(i2)爲空並且無法將空值傳遞給字符串? – 2013-04-07 02:56:39

+0

@Karakuri它完成了 – 2013-04-07 02:58:26

回答

4

空指針是在行if(test.equals("null")){,因爲testnull,並且您正試圖對其撥打.equals()

如果你想檢查字符串爲空,則使用if (test == null)代替

如果你想檢查該字符串的值爲「零」,用if ("null".equals(test))代替

+0

你是對的!但我怎樣才能將空值傳遞給字符串,以便test =「null」?必須等5分鐘才能接受 – 2013-04-07 03:04:12

+0

@ Karakuri謝謝你的幫助! – 2013-04-07 03:13:20

1

試試這個:

for(int i2=0;i2<ftdata.size();i2++){ 
     System.out.println("FTDATASIZE: " +ftdata.get(i2)); 
     String test; 
     if(ftdata.get(i2)!=null){ 
      test = ftdata.get(i2); 
     } 
    }