K想比较两个字符串,但equals()
方法总是返回true,所以if语句总是运行。为什么会这样?
resultString = "Test1";
String CompleteString = "Test";
if(CompleteString.equals(resultString));
{
rowView.setBackgroundResource(R.color.listselect_red);
}
答案 0 :(得分:18)
if(CompleteString.equals(resultString));
< - 删除;
您的代码相当于:
if(CompleteString.equals(resultString))
{
//empty block
}
{
rowView.setBackgroundResource(R.color.listselect_red);
}
因此,如果equals返回true,则执行空块,并且在第二个块之后将始终执行,无论if是false
还是true
。
答案 1 :(得分:4)
删除if语句后的;
。
if(CompleteString.equals(resultString))
{
rowView.setBackgroundResource(R.color.listselect_red);
}
答案 2 :(得分:2)
从;
if(CompleteString.equals(resultString));
;
表示语句结束,因此即使if()
循环returns
false
或true
if()
之后出现的所有语句都将被执行.So rowView.setBackgroundResource(R.color.listselect_red);
将一直执行。
试试这种方式
resultString = "Test1";
String CompleteString = "Test";
if(CompleteString.equals(resultString))// removed `;`
{
rowView.setBackgroundResource(R.color.listselect_red);
}
答案 3 :(得分:2)
这是因为&#39 ;;'在if的结尾。只需删除即可使用!
答案 4 :(得分:2)
if(CompleteString.equals(resultString));
如果阻止它看起来像一个空状态,它将不会进入:)
答案 5 :(得分:2)
因为条件是分号。
更正代码
resultString = "Test1";
String CompleteString = "Test";
if(CompleteString.equals(resultString))
{
rowView.setBackgroundResource(R.color.listselect_red);
}