죄송합니다. 제목이 끔찍합니다. 그러나 나는 내 처지를 요약하는 더 좋은 방법을 생각할 수 없었다.아나 그램 확인시 이상한 비교 문제
하나의 문자열이 다른 문자열의 anagram인지 확인하는 것과 관련된 문제를 해결하기 위해 두 문자열에서 모든 공백을 제거하고 두 문자 배열을 정렬하여 정렬 한 다음 서로 같다
그렇다면 "anagram"입니다. 그렇지 않으면 "anagram"이 아닙니다.
문제는 내 코드가 성공적으로 컴파일되고 정상적으로 실행 되더라도 원래의 두 문자열이 실제로 서로의 아나그램인지 여부에 관계없이 최종 결과는 항상 "아님 그램이 아닙니다"입니다. 디버깅을 위해 삽입 한 빠른 코드는 실제 분석기가있는 경우 비교를 끝내는 두 개의 문자 배열이 분명히 동일하지만 비교 결과가 false라는 것을 보여줍니다.
엄청나게 명백한 것을 간과하거나 내가 비교할 때 추가로 표시되지 않은 문자가있는 경우가 아니면 왜 이런 일이 발생하는지 정확히 알 수 없습니다.
import java.util.Arrays;
import java.util.Scanner;
public class Anagram {
public static void main(String[] args) {
char[] test1;
char[] test2;
Scanner input = new Scanner(System.in);
System.out.print("Enter first phrase>");
test1 = input.nextLine().replaceAll(" ", "").toCharArray();
Arrays.sort(test1);
System.out.print("Enter second phrase>");
test2 = input.nextLine().replaceAll(" ", "").toCharArray();
Arrays.sort(test2);
if (test1.equals(test2)) {
System.out.println("Is an anagram.");
}
else {
System.out.println("Is not an anagram.");
}
/* debugging */
System.out.println(test1);
System.out.println(test2);
System.out.println(test1.equals(test2));
}
}
그리고 테스트 실행의 결과 출력 :
여기에 코드입니다
Enter first phrase>CS AT WATERLOO
Enter second phrase>COOL AS WET ART
Is not an anagram.
AACELOORSTTW
AACELOORSTTW
false
모든 모든 도움을 크게 감사합니다.
효과가있었습니다. 정말 고맙습니다. =) – akbiggs