2014-03-13 101 views
-3

我想比較我的應用程序中的兩個字符串,但它無法比較。我不知道它爲什麼失敗。字符串比較不工作在android

public void processFinish(String output) { 
      // TODO Auto-generated method stub 
      //Toast.makeText(getApplicationContext(), output,Toast.LENGTH_LONG).show(); 

      String check="false"; 
      if(output==check){ 
        //doing something here 
       }else{ 
        //something here 
       } 
    } 

字符串對象輸出的值爲「假」但總是執行else塊,爲什麼? 我通過改變output=="false"

output.equals(check) 
output.equalsIgnoreCase(check) 
output.contentEquals(check) 

空話作品試過......

+3

'.equals()'應該工作 – Raghunandan

+0

@Raghunandan它不工作。那就是我來這裏的原因。 – DharanBro

+1

然後這些字符串不是相同的可能,如果沒有它shoudl工作 – Raghunandan

回答

7
public void processFinish(String output) { 
      // TODO Auto-generated method stub 
      //Toast.makeText(getApplicationContext(), output,Toast.LENGTH_LONG).show(); 

      String check="false"; 
      if(output.trim().equals(check.trim())){ 
        //doing something here 
       }else{ 
        //something here 
       } 
} 

您的字符串正從法一些不需要的空白修剪()刪除起點和終點空白:)和.equals這是一個比較對象類方法二串:)

+0

thanks.working罰款。但你能解釋我在那裏發生了什麼? – DharanBro

+0

你的字符串從方法trim()中刪除一些不需要的空白刪除開始和結束空白:)和.equals是一個對象類方法,它比較兩個字符串:) –

+0

@DharanBro什麼是檢查。有沒有空間? – Raghunandan

0

我覺得output.equals(檢查)必須工作

或者您d說法可能不正確。可能它不是一串「假」而是「假」?

首先檢查它們的長度,然後使用output.trim().equals(check)

0

由於String的實例是對象,因此無法將兩個對象與==進行比較。要比較兩個String,您必須使用equals()equalIgnoreCase()方法。

替換此

if(output==check){ 
    //doing something here 
}else{ 
    //something here 
} 

與...

if(output.equals(check)){ 
    //doing something here 
}else{ 
    //something here 
} 
0

嘗試以下

  if(output.contains(check)== true{ 
       //doing something here 
      }else{ 
       //something here 
      }