2013-08-04 75 views
-3
String temp_content = null; 

while((line = br.readLine())!= null) 
{ 
    if(temp_content.length() == 0) /* NPE */ 
    { 
     temp_content = line; 
    } 
    else 
    { 
     temp_content = temp_content+line; 
    } 
} 

我在上述指定行獲得NullPointerException。 使用"temp_content.length() == 0"找出字符串是否爲null?是錯誤的。 誰能告訴我爲什麼?用於字符串長度的Java NPE

+0

你應該初始化字符串變量,像溫度= 「」 或者臨時=新的臨時();當你試圖在空對象中執行任何函數時,你將得到NPE。 –

回答

2

你的代碼應該是:

String temp_content = null; 

while((line = br.readLine())!= null) 
{ 
    if(temp_content == null) 
    { 
    temp_content = line; 
    } 
    else 
    { 
     temp_content += line; 
    } 
} 

使用StringBuilder將使其更好:

StringBuilder temp_content = new StringBuilder(); 

while((line = br.readLine())!= null) 
{ 

     temp_content.append(line); 
} 
1

temp_content初始化爲null。確保其初始化爲空字符串,以避免NPE

String temp_content = ""; 
1

temp_contentnull,因此調用.length()它就像調用null.length(),這會導致NullPointerException。爲了使這種不發生,必須對其進行初始化:

temp_context = ""; 

要確定Stringnull,你可以使用:

if (temp_content == null) 
1

因爲temp_contentnull和正在撥打的是instance methond on null參考。

如果你想知道一個字符串是否是,那麼你需要使用==驗證的相同。

if (temp_content == null) { 
    System.out.println("String is null"); 
} 

NPE是每次拋出嘗試在引用調用instance方法。

注:NPEnull引用調用靜態方法時,不拋出。

0

你應該初始化你的字符串變量temp =「」或temp = new temp();當你試圖在空對象中執行任何函數時,你將得到NPE。