2013-09-04 8 views
0

입력이 문장을 포함하고 있는지 여부를 확인하고 문장이 존재할 경우에만 회문 용어를 반환하는 클래스를 작성 중입니다. 나는 다음을 개발할 수 있었고 오류없이 컴파일하고 실행하지만 그로부터 어떠한 수익도 얻지 못하고있다.args를 사용하는 Palindrome; 오류를 찾는데 도와 주시겠습니까?

누구든지 내 오류가있는 곳을 찾을 수 있습니까?

나는이 문제가 주된 방법, 특히 if 문 안에 있다고 생각하지만, 왜 작동하지 않는지 정확히 알 수는 없습니다.

public static void main(String[] args) { 
    for (int i = 0; i < args.length; i++) { 
     if (isPalindrome(args[i]) == true) { 
      System.out.println(args[i]); 
     } 
    } 

} 

제공되는 도움에 미리 감사드립니다. 시간 내 주셔서 감사합니다.

+1

장소에서 수행하면 문장을 훨씬 효율적으로 확인할 수 있습니다. 그러나 그것은 또 다른 질문입니다. 이 구현의 큰 O는 실제로 n^2입니다. –

답변

0

일반적인 오류입니다. 문자열의 비교가 잘못되었습니다. == 연산자를 사용하지 마십시오. equals() 방법을 사용하십시오.

word == back에서 word.equals(back)으로 변경하십시오.

휴식해야합니다.

0

문자열 평등을 평가하려면 ==를 사용하지 말고 대신 equals()를 사용하십시오.

if (word.equals(back)) 
1

.equals() 오류로 두 번째. 첫 번째 부분, 당신이 청소기 코드이며, 또한 더 최적화 된 back = new StringBuilder(word).reverse().toString()를 사용하여 역 수에 대한

String a = "sampleelpmas"; 
String b = new StringBuffer(a).reverse().toString(); 

a.equals(b); //TRUE 
+1

출력이 false입니다. 그것은 회문이 아닙니다. – Pawel

+0

하하하. 네가 옳아. 안티 - 어리 석음 편집. – SWPhantom

+0

이제 출력이 정확합니다;). – Pawel

1

(:

또한, 당신은 쉽게 내장 된 문자열 반전 절차를 사용하여 회문을 확인할 수 있습니다 또한 더 빠르지 만 여기서는 중요하지 않음).

하지만 문자열을 비교하는 데 문제가 있습니다. == 두 객체가 같고 두 문자열이 맞지 않는지 확인하십시오. 예를 들어, 두 문자열이 같아도 마찬가지입니다. 문자열의 텍스트 내용이 일치하는지 확인하는 word.equals(back)을 사용하십시오.