If语句仅返回" else"的结果。声明

时间:2014-03-26 17:14:08

标签: java android if-statement

我正在尝试创建一个脚本,将用户输入与另一个字符串进行比较。问题在于我的if语句。我没有收到错误,但它总是返回" 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);                   
            }                           
        }
    });

5 个答案:

答案 0 :(得分:3)

比较equals()时,请使用==方法代替String运算符。对于String,如果两个字符串的引用相同,则两个字符串将相同,并且要发现它们都引用相同的点,则必须使用equals()方法。 ==运算符只能比较基本类型值,但String的实例是对象。

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

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

答案 1 :(得分:1)

==用于测试两个字符串是否是同一个对象; - 参考平等。

您想检查该值,因此应使用.equals()

看看:

http://www.programmerinterview.com/index.php/java-questions/java-whats-the-difference-between-equals-and/

进一步说明。

答案 2 :(得分:0)

您的错误在这里:

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

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

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

答案 3 :(得分:0)

使用此

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

答案 4 :(得分:0)

&#34; textField == title&#34;使用==将检查它们是否完全相同,不仅仅是值,而且还存储在相同的内存位置。

相反尝试使用 if(textField.equals(title)){

这里显示了一个很好的例子http://www.programmerinterview.com/index.php/java-questions/java-whats-the-difference-between-equals-and/