2014-03-26 198 views
0

我想制作一个脚本,将用户输入与另一个字符串进行比较。问题在于我的if语句。我没有收到错误,但总是返回“else”语句中的结果。下面是代码:如果语句只返回来自“else”语句的结果

String [] lessons_titles = {"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","30","40","50","60","70","80","90"}; 

final TextView dan_view = (TextView)findViewById(R.id.DanText); 
final int position = getIntent().getExtras().getInt("position"); 
final String title = lessons_titles[position]; 

check_b.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      String textField = check_text.getText().toString(); 
      if (textField == title){ 
       dan_view.setTextColor(Color.GREEN); 
      } 
      else { 
       dan_view.setTextColor(Color.RED);     
      }       
     } 
    }); 

回答

3

使用equals()方法,而不是==操作时,你比较String。在String的情况下,如果两个字符串的引用相同,并且发现它们都引用相同的点,则两个字符串将相等,则必须使用equals()方法。 ==运算符只能比较原始类型值,但String的实例是对象。

所以,你的情况应该是如下...

if (textField.equals(title)){ 
    dan_view.setTextColor(Color.GREEN); 
} else { 
    dan_view.setTextColor(Color.RED); 
} 
0

你的错误是在这里:

if (textField == title){ //<-- 

文本字段是一个字符串,您需要使用.equals(),例如检查字符串相等

if (textField.equals(title)){ //<-- 
0

使用本

if (textField.compareTo(title) == 0) 
{ 
    dan_view.setTextColor(Color.GREEN); 
} 
    else { 
     dan_view.setTextColor(Color.RED);     
    }