2016-10-11 12 views
-4

URL과 str2의 데이터로 채워지는 str1이라는 이름의 2 개의 문자열은 SQLite Database.str1의 데이터로 채워지는 "x4"이고 str2는 "x4"이지만 비교할 때 같음이 아닙니다.왜 내 문자열이 동일하지 않습니까?

if(str1.equals(str2)) System.out.println(str1 + "=" + str2); 
else System.out.println(str1 + "!=" + str2); 

항상 항상 x4!=x4을 인쇄합니다.

값이 변경되었지만 항상 같지 않습니다. Database.str1는 "X4"및 STR2입니다

+1

아마도 후행 공백은? –

+0

'System.out.println (">"str1 + "! ="+ str2 + "<");'인쇄를 시도해보십시오. – Berger

+0

@Berger'System.out.println (Arrays.toString (str1.toCharArray()) + "! ="+ Arrays.toString (str2.toCharArray())); –

답변

1

등 공간, 비 인쇄 문자, 유니 코드와 관련된 차이를 후행 찾고 제안 :

StringBuilder string = new StringBuilder(); 
string.append("'"); 
string.append(str1); 
string.append("'"); 

if(!str1.equals(str2)){ 
    string.append("!"); 
} 

string.append("'"); 
string.append(str2); 
string.append("'"); 
System.out.println(string.toString()); 

공간이 있는지 가능성이 높습니다 입력하거나 탭 중 하나에 있습니다. 각 문자열의 시작과 끝 부분에 문자를 추가하여 그 경우인지 확인할 수 있습니다.

문제가 계속되면 다른 문자 중 하나가 인쇄 할 수 없다는 것을 의미합니다. 이 경우 시도 :

string.append(str1.toCharArray()); 

대신

string.append(str1); 

의 그리고 str2에 대해 동일한 작업을 수행.

1

은 "X4"그것은 같은을 보일 수 있습니다

,하지만 난 그런 경우가 아니다 내기. 왜 각 문자열에 대한 문자 배열을 인쇄하지 않는가? 그리고 그 방법으로 무엇이 다른지 확인할 수 있습니까? 나는/선도로 변경합니다

0

케이스 차이로 인해 a_horse_with_no_name이 말한 것처럼 후행 공백으로 인해 또는 어쩌면 눈치 채지 못했을 수 있습니다. 이 시도 :

if(str1.trim().equalsIgnoreCase(str2.trim())) 
    System.out.print(str1 + "=" + str2); 
else 
    System.out.print(str1 + "!=" + str2); 

사용 trim()이 경우의 차이를 고려하여 후행 공백을 제거하고 equals() 대신 equalsIgnoreCase()을 사용합니다.

+0

OP가 요구 한 것이 확실하지 않습니다. 그는 그들이 평등하지 않은 이유를 물었습니다. 그러나 내가 틀렸다면 당신의 말이 맞습니다. –

+0

차이점이 문자열 끝에 없으면 어떻게해야합니까? 예 : 'Ab'와'A \ 0b'는 제 콘솔에서 같지만'\ 0'은 제거되지 않습니다. –

+0

@AndyTurner이 경우 문자열이 "불균등"하지 않습니까? – progyammer

관련 문제