2013-12-14 2 views
4

K는 두 개의 문자열을 비교하려고하지만 equals() 메서드는 항상 true를 반환하므로 if 문이 항상 실행됩니다. 왜 이런 일이 일어 났습니까? -String.equals() 항상 true를 반환

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

답변

16

if(CompleteString.equals(resultString)); <는 ;

귀하의 코드를 제거하면 해당하는 것입니다 : 그래서 진정한 수익을 동일한 경우

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

, 빈 블록이 실행됩니다, 두 번째 블록 후 항상false 또는 true 인 경우를 실행합니다.

+1

감사합니다 .. 조건의 경우에 , 나는 그것을 보지 못했다! 때로는 어리석은 실수를 저에게 만들어서 화가납니다. – Memento

+1

세미콜론이 보이지 않았기 때문에 실수를했습니다. 가끔씩 발생하지만 나는 downvote를 이해하지 못합니까? 이 사이트는 그러한 질문을하기 위해 만들어졌으며 일부는 해결하기가 어려웠으며 그 중 일부는 쉽습니다! – Memento

4

if 문 다음에 ;을 제거하십시오.

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

if(CompleteString.equals(resultString));

;에서 ; 제거 그래서 심지어 if() 루프 returnsfalse 또는 true 모든 진술 본 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); 
} 
2

이 때문에입니다 ';' if의 끝에서. 그냥 제거하고 작동합니다! 블록은 빈 상태 :처럼 보이는 경우

2
if(CompleteString.equals(resultString)); 

이 글은 입력하지 않습니다

2

이 때문에 세미콜론입니다

올바른 코드

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

그것은 나를 위해 일했다 .... !!! –

관련 문제