String.equals()始终返回true

K想比较两个字符串,但equals()方法总是返回true,所以if语句总是运行。 为什么会这样?

 resultString = "Test1"; String CompleteString = "Test"; if(CompleteString.equals(resultString)); { rowView.setBackgroundResource(R.color.listselect_red); } 

if(CompleteString.equals(resultString)); < - 删除;

您的代码相当于:

 if(CompleteString.equals(resultString)) { //empty block } { rowView.setBackgroundResource(R.color.listselect_red); } 

因此,如果equals返回true,则将执行空块,并且在第二个块之后将始终执行if if为falsetrue

删除; 在if语句之后。

 if(CompleteString.equals(resultString)) { rowView.setBackgroundResource(R.color.listselect_red); } 

这是因为’;’ 在if的结尾。 只需删除它就可以了!

 if(CompleteString.equals(resultString)); 

它不会进入if块它看起来像一个空的条件:)

删除; 来自if(CompleteString.equals(resultString));

; 表示语句的结束,所以即使if()循环returns falsetrueif()之后的所有语句都将被执行。 rowView.setBackgroundResource(R.color.listselect_red); 将一直执行。

试试这种方式

 resultString = "Test1"; String CompleteString = "Test"; if(CompleteString.equals(resultString))// removed `;` { rowView.setBackgroundResource(R.color.listselect_red); } 

这是因为如果条件分号。

正确的代码

 resultString = "Test1"; String CompleteString = "Test"; if(CompleteString.equals(resultString)) { rowView.setBackgroundResource(R.color.listselect_red); }