2011-04-22 108 views
0

在if-else條件下比較兩個字符串時,會執行錯誤的分支。我有s1 = "failure",我將它與ss進行比較以執行,但它轉到else分支。爲什麼,當條件滿足時?比較Android上的兩個字符串

public class cabbookingconfirmation extends Activity 
{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.cabbbookingconfirmation); 
     String ss = Activity1.getData(); 
     String s1 = "failure"; 
     Log.i("tag..........", ss); 
     if (ss.equals(s1)) { 
      Log.i("saurabh..........","trivedi...."); 
     } else { 
      TextView tv = (TextView)findViewById(R.id.details); 
      tv.setText("Dear Gaurav....," + 
       "Your cab has been booked. " + 
       "Please refer to your planner " + 
       "for details.Have a safe trip!"); 
      tv.setBackgroundColor(111); 
     } 
    } 
} 

activity1.java低於

public class Activity1 extends Activity 
{ 
    public static String getData() { 
     String responceid = null; 
     try { 
      URL url = new URL("http://qrrency.com/mobile/j2me/cab/BookCab.php?bookingid=666"); 

      BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); 
      int m = 0; 
      StringBuffer buffer = new StringBuffer(); 
      String str1 = " "; 
      while ((m = in.read()) != -1) 
      { 
         buffer.append((char)m); 
         str1 = str1 + (char)m; 
         responceid = str1; 
      } 

      Log.i("Line----saurabh trivedi---,------,,--", responceid); 

      in.close(); 
     } catch (MalformedURLException e) { 
     } catch (IOException e) { 
     } 
     return responceid; 
    } 
} 
+1

嘗試打印字符串's1'和'ss'。 – 2011-04-22 08:17:39

+0

你確定'Activity1.getData()'返回一個真正的字符串嗎?我們可以看到這種方法的源代碼嗎? – OcuS 2011-04-22 08:49:18

+0

所以,你的字符串不相等。而ss不是「失敗」,它等於Activity1.getData()。作爲pankaj建議使大小寫無關比較(compareToIgnoreCase) – Tima 2011-04-22 08:52:09

回答

-1

我真的不知道安卓SDK

在.NET

if (ss.equals(s1)) 

應該很好地工作!也許這裏ss.equals不測試字符串?或者返回的字符串是另一種格式或空格?

嘗試使用

(string1.equalsIgnoreCase(string2)) 

編輯 - 刪除(SS == S1) - 不更正原來的答案

這就是Java語法,如果不應該與工作..然後有東西在不同的兩個刺,你將不得不對他們進行解碼並查看該差異是

由way-這是什麼呢

Log.i("tag..........",ss); 

你確定它不會以某種方式影響ss嗎?它的權利之前和之後的聲明

+1

-1不是一個很好的建議。 ==比較引用而不是內容。和Log.i()不會修改字符串,但會將其打印到Logcat。 – RoflcoptrException 2011-04-22 08:33:08

+0

對 - 對不起!你的原始代碼是正確的string1.equals(string2),但你也可以使用(string1.equalsIgnoreCase(string2)) – ppumkin 2011-04-22 08:41:44