比较Android上的两个字符串

问题描述:

在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

我真的不知道安卓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