2014-03-04 78 views
2

您可以檢查爲什麼這個代碼跳轉到其他與像E1 =「1」,E2 =「2」 E3無法比較空字符串

if (e1=="" || e2=="" || e3==""){ 
       Context context = getApplicationContext(); 
       CharSequence text = "Fill in all required fields!"; 
       int duration = Toast.LENGTH_SHORT; 
       Toast toast = Toast.makeText(context, text, duration); 
       toast.setGravity(Gravity.CENTER|Gravity.CENTER, 0, 0); 
       toast.show(); 
      } 
      else { 
       m=Integer.parseInt(e1); 
       std=Integer.parseInt(e2); 
       nhv=Integer.parseInt(e3); 
      rsl=((std*std)*((t1+t2)*(t1+t2)))/((m-nhv)*(m-nhv)); 
      if (Math.round(rsl) < rsl) { 
       rsl = Math.round(rsl) +1; 
      } 
      else { 
       rsl=Math.round(rsl); 
      } 
      et4.setText(""+rsl); 
     } 
+5

對於字符串使用.equals不== –

+0

@iamnotmaynard:這是一個有點不同,因爲它是Android的 – Brian

+0

@GIJoe,不知道是否嚴重或只是開玩笑,它的Java,它在哪裏運行它並不重要。 – SteveL

回答

1

對於String比較,你需要的條件=「」使用.equals(),如e1.equals(""),或argubly更好"".equals(e1)
第二種形式非常好,因爲它永遠不會拋出NullPointerException

請記住,只有基元int等應與==進行比較,其他所有內容都應與Object#equals(Object)進行比較。

+1

其實,正確的方法是使用'isEmpty',如果使用Android 2.3或更高版本或'TextUtils' – Brian

+0

+1我會說你的第二種形式是_inarguably_更好,因爲它本質上是空的-安全。 – iamnotmaynard

+0

@iamnotmaynard:我的兩個例子都是無效的。 TextUtils.isEmpty檢查null。您可以在Android中自己查看代碼。 – Brian

0

既然要檢查,如果你的String爲null或空,use the method爲它設計的:

if (myString != null && !myString.isEmpty()) 
{ 

// doSomething 

} 

還有什麼是容易出現的錯誤或僅僅是不明確的。

注意:這在Android 2.3中可用。

谷歌還經由TextUtils提供這樣的:如果

if (TextUtils.isEmpty(value)) 
{ 
    // do something 
} 

內部TextUtils.isEmpty()檢查字符串的長度爲0(並執行空校驗)。

0

只需使用:

if (e1.isEmpty() || e2.isEmpty() || e3.isEmpty()) 
+0

oops。得到它了。謝謝 :) – VipulKumar