나는 자바에서 compareTo
방법에 문제는, 이것은 코드가 있습니다compareTo 메소드 이상한
for(int i = 0; i < btFolder.size(); i++) {
String g = btFolder.get(i).toString();
String[] subf = g.split(splitchar);
String s = subf[subf.length-1].toUpperCase();
if(s.compareTo(bt.toUpperCase()) == 0) {
return g;
}
}
return null; //not found!
이이 if-statement
에 뛰어하지 않습니다, 그것은이 s
및 bt
변수가 동일해야하기 때문에 , 나는 숙제를하고 그것을 디버깅했기 때문에 알았다.
String g = btFolder.get(i).toString();
String[] subf = g.split(splitchar);
String s = subf[subf.length-1].toUpperCase();
String btUp = bt.toUpperCase();
int theSame = s.compareTo(btUp);
if(theSame == 0) {
putSharedPrefs("pathToBt", g);
}
return null;
변수 theSame
가 0, s
및 btUp
이 동일하다는 것을 의미 : 그냥 나는이 코드 조각을 썼다 무엇 compareTo
방법 리턴 파악합니다. 그리고 여전히 the if-statement
은 실행되지 않습니다!
왜 이런 일이 발생합니까? 이것에 대한 좋은 해결책이 있습니까?
나는이 너무 시도했습니다
편집 : 나는이가 thread
내부에서 수행되는 것을 언급한다
boolean equals = s.equalsIgnoreCase(bt);
if(equals) {
return g;
}
boolean
는, true
,하지만 결코 if-statement
을 실행하고있을하지만 문제를 일으키지 않아야합니까?
왜 'compareTo'대신 'String.equalsIgnoreCase'를 사용하지 않으시겠습니까? – maba
사용하기에 조금 비싸기 때문입니다. 나는 전체 문자열을 동일한 순서로 그리고 문자열의 일부가 아니라 정확히 동일하게하고 싶다. 이것은 실제로 작동해야하는'compareTo'를 왜 사용하는지에 대한 질문이 아닙니다. –
* "theSame 변수는 0이며 s 및 btUp이 동일 함을 의미하지만 여전히 if 문은 실행되지 않습니다!"* => 그럴 수 없습니다. 자신의 문제를 보여주는 [단문, 자기 포함, 올바른 예 (SSCCE)] (http://www.sscce.org/)를 게시하면 더 나은 답변을 얻을 수 있습니다. – assylias