2013-09-21 2 views
-1

if 문은 배열의 문자열 - tokens [i]를 읽지 않으므로 if가 실행되지 않습니다. 문자열 "hot"은 읽을 수 없습니다. 왜 이렇게이다? 도와주세요! 감사.Java에서 배열의 두 문자열을 비교하는 방법은 무엇입니까?

public static void main(String[] args){ 

    String str = "Wow! It's getting realy hot in here." ; 
    String delims = "[ .,?!/><;:'_!`~/$/@/#/%/&/|/[/]/{/}/)/(]+"; 
    String[] tokens = str.split(delims); 

    for (int i = 0; i < tokens.length; i++){ 
     if (tokens[i] == "hot"){ 

      System.out.println("Found!"); 
      break; 
     } 
     else { 
      System.out.println("Not found!"); 
     } 
    }  

} 
+5

'=='이 아닌'equals'와 문자열을 비교하십시오. –

+0

[이 게시물] (http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java)와 유사합니다. – Frithjof

+1

Nooooooooooo .. please nooooooooo : ___ ( – Maroun

답변

6

문자열을 비교하는 데 String.equals(String otherString) 함수를 사용하십시오.

if (tokens[i].equals("hot")){ 

연산자는 ==이 아닙니다.

이유는 ==은 단지 객체 참조/프리미티브를 비교하기 때문입니다. 여기서 문자열의 .equals() 메서드는 평등을 검사합니다.

+0

@Suresh 괜찮습니다. 이제 "끈"문자열이 텍스트에서 발견되었을 때 "Found"만 표시되도록 코드를 편집해야합니다. 감사합니다. – lrayzzor

+0

@lrayzzor 다행히도, 당신은 환영합니다. –

+1

답변을 수락 된 것으로 플래그 할 수 있습니까? – lkuty

1

String을 비교하기 위해 == - 오페라를 사용하고 있기 때문에 이것은 작동하지 않습니다.

== - 오 퍼레이터는 개체 참조가 동일한 지 확인합니다. "hot"tokens[i]과 같은 참조가 아니기 때문에 그렇지 않습니다.

Object.equals()은 개체의 값을 비교합니다. String의 경우 문자 조합이 동일한 지 비교합니다. 자세한 내용은 API을 확인하십시오.

따라서 tokens[i].equals(String str)을 사용하십시오.

대소 문자 구분이 중요하지 않은 경우이 방법을 사용하십시오 (string.eqaulsIgnoreCase(String anotherString).

+0

예. 알겠습니다. 정보를 제공해 주셔서 감사합니다. 시도해 보니 문제가 없습니다. – lrayzzor

관련 문제