String.equals()总是返回true

问题描述:

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

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); 
} 

所以,如果等于返回true,则空块将被执行,而第二块之后将是总是执行任何如果是falsetrue

+1

谢谢,我没有看到!有时候犯这样一个愚蠢的错误让我很生气 – Memento

+1

我犯了错误,因为我没有看到那个分号,有时会发生,但我不明白downvote?这些网站提出了这样的问题,其中一些难以解决,其中一些很容易! – Memento

删除if语句后的;

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

if(CompleteString.equals(resultString));

;除去;装置语句的端部,从而即使在if()returnsfalsetrue所有语句本if()之后将executed.So rowView.setBackgroundResource(R.color.listselect_red);将被执行的所有的时间。

尝试这种方式

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

这是因为 ';'在if的结尾。只要删除,它会工作!

if(CompleteString.equals(resultString)); 

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

这是因为分号的,如果条件..

正确的代码

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

它为我工作.... !!! – 2013-12-14 11:08:49