2014-10-31 2 views
0

저는 Java (및 프로그래밍 전반)에 익숙하지 않습니다. 나는 문자열이 동일한 길이이고 동일하지 않은 경우에만 두 개의 변수 문자열에 대해 메소드를 실행해야하는 프로그램을 가지고 있습니다.Java에서 while 루프의 반복을 건너 뛰는 데 문제가 발생했습니다.

나는

while(i < n){ 
    if (string1.length() == string2.length() && string1 != string2){ 
     compare(string1, string2); 
     i++ 
    } 
} 

를 사용하여 시도했지만 여전히 가 문자열이 동일한 경우에도 방법을 비교 실행합니다.

또한

while(i < n){ 
    if (string1.length() == string2.length(){ 
     if (string1 == string2){ 
      continue; 
     } 
     compare(string1, string2); 
    } 
    i++ 
} 

를 사용하여 시도했지만이 또한 여전히 에 관계없이 문자열이 동일한 지 여부의 방법을 비교 실행합니다.

서식이 잘못되었거나 잘못된 키워드가 있습니까? 감사!

+1

비교를 위해 String equals() 메소드를 사용해보십시오. –

+0

문자열이 정말로 동일하다면'compare'가 실행되면 놀라실 것입니다 ('string1 = string2'를 통해 같은 값을 사용하는 경우) –

답변

1

string1 != string2String 값 평등을 테스트하지 않으며 참조 평등 만 테스트합니다. !string1.equals(string2)이 필요합니다. 아니면 while 그것은 또한 두 String (들)이 있어야합니다 같은 length() 또는 equals() 반환 false을 주목할 필요가있다, 같은 수

if (string1.equals(string2)) { 
    // ... they're equal. 
} 

가 필요합니다.

+0

25 초 빠릅니다 –

0

== 대신에 equals() 메서드를 사용하십시오. 객체를 비교할 때는 두 등호를 사용할 수 없습니다.

0

if (string1.length() == string2.length() && !string1.equals(string2)) 

== 검사 기준 평등 변경

if (string1.length() == string2.length() && string1 != string2) 

. String 변수에 들어갈 때 힙에 두 개의 다른 참조가있는 반면 value 같은 참조가 있습니다. 값의 동일성을 검사하려면 equals()

관련 문제