【发布时间】:2009-12-13 13:23:36
【问题描述】:
对不起,标题太糟糕了;但是,我想不出任何更好的方式来总结我的困境。
在尝试解决一个涉及检查一个字符串是否是另一个字符串的字谜时,我实现了一个解决方案,该解决方案涉及从两个字符串中删除所有空格,将它们都转换为字符数组,对它们进行排序,然后查看它们是否是彼此相等。
如果是,程序打印出“Is an anagram.”,否则“Is not an anagram.”
问题是,即使我的代码编译成功并且运行良好,最终结果将始终是“不是一个字谜。”,无论两个原始字符串是否确实是彼此的字谜。我为调试插入的快速代码表明,在一个实际的字谜的情况下,我最终比较的两个字符数组显然是相同的,但比较的结果是错误的。
我不知道为什么会发生这种情况,除非我忽略了一些非常明显的东西,或者在我比较的内容中有一些额外的未显示字符。
代码如下:
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
非常感谢任何和所有帮助。
【问题讨论】:
标签: java comparison