我正在尝试创建一个脚本,将用户输入与另一个字符串进行比较。问题在于我的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);
}
}
});
答案 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()
看看:
进一步说明。
答案 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/