2014-11-22 3 views
0

간단한 코드로 된이 작은 피어싱을 가지고 있지만 작동하지 않는 이유는 모르겠습니다.String.equals가 true 일 때도 true를 반환하지 않습니다.

tagName="Hello"; 
String value="Hello"; 
if (tagName!=null && tagName.equals(value)) 
{ 
    int io=0; 
} 

tagNamenull하지 않고 명확하게 value에 동일하지만, 코드는 결코 아무런 효과가 없기 때문에 int io=0;

+0

이 코드를 실행 하시겠습니까? if 문 앞에'tagName.equals (value)'의 값을 출력하면 어떻게됩니까? –

+0

'if' 블록에 출력이 없습니다. 'println' 문을 추가하거나 디버그 해보십시오. – Reimeus

+0

예 코드가 실행 중입니다. 'io = 0' 문에서 중단 점을 설정하고 단계별로 디버깅 중이며 if 문이 false를 반환 한 것처럼 건너 뜁니다. – Maven

답변

7

자바 과제 문을 최적화 할 수있는 선을 명중하지 않습니다. 그 블록에 System.out.println을 넣을 수 있습니다. 또는 'int io'를 if의 바깥쪽에 옮기고 블록 내에 할당을 할 수 있습니다.

+0

고맙습니다. 최적화를 해 주셔서 감사합니다. 많은 코드를 넣어야했지만, 지금은 코드가 잘 실행되어 왜 그렇게 혼란 스러울지라도이 더미 문으로 확인하고있었습니다. 이제 블록을 의미가 없게 만들었을 때 중단 점은 정상적으로 작동합니다. 이 자바 최적화가 놀랍고 혼란 스럽다는 것을 말해야 만합니다. – Maven

+0

당신은 맞습니다 shekhar suman, 당신은 매우 상세한 답장을 올렸고 많은 도움을주었습니다. 그러나 나는 bmargulies가 제안한 것을 통해 이미이 문제를 해결 했으므로 이것을 받아 들였습니다. 내가 두 가지 대답을 받아 들일 수 있다면 분명히 그 일을했을 것입니다. 나는 감사의 말로 모든 의견을 투표합니다. – Maven

+0

@shekharsuman 당신은 OP를 모욕하는 것으로 시작했는데 ('열악한 디자인'), 그것은 어떤 불리한 생각을 불러 일으켰을지도 모른다. 그러나 그물 표결은 당신이 그것을 지울 때 0 이었기 때문에 모든 소란이 무엇인지 잘 모르겠습니다. – bmargulies

관련 문제