String.equals()始终返回true

时间:2013-12-14 10:56:12

标签: java android string

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

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

6 个答案:

答案 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 falsetrue 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);
}