我正在教自己如何用java编码,我使用在互联网上找到的练习练习我学到的东西。
我现在处于一个问题的中间,要求我比较两个字符串(来自用户的输入)并检查两个字符串是否包含相同的字母。
示例:
areAnagrams("asd","dsa") -> true
areAnagrams("Debit Card","Bad Credit")=> true
得到了主意?
我知道==只检查它们是否都引用同一个对象。 我以为
public int compareTo(String otherString)
应该完成这项工作。 但它不起作用= \
我到现在所做的是:
public static boolean areAnagrams(String a, String b)
{
int x=0;
a.trim();
b.trim();
x=a.compareTo(b);
System.out.println(x);
return x==0 ? true:false;
}
public static void main(String[] args)
{
Scanner temp= new Scanner(System.in);
Scanner temp2= new Scanner(System.in);
String a= temp.next();
String b= temp2.next();
System.out.println(areAnagrams(a,b));
}
}
但它不起作用。我认为有一个命令应该比较价值,但我无法在网上找到它。
将帮助您提供帮助
谢谢!
答案 0 :(得分:3)
如何尝试Arrays
这样: -
char[] w1= firstWord.trim().toUpperCase().replaceAll("[\\s]", "").toCharArray();
char[] w2= secondWord.trim().toUpperCase().replaceAll("[\\s]", "").toCharArray();
Arrays.sort(w1);
Arrays.sort(w2);
return Arrays.equals(w1, w2);
答案 1 :(得分:2)
compareTo
方法检查字符串是否在词典上相等,请参阅:
http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#compareTo(java.lang.String)
您想要比较输入字符串中的所有字符。
答案 2 :(得分:1)
在该链接中,请参阅:
public static boolean isAnagram(String s1, String s2){
// Early termination check, if strings are of unequal lengths,
// then they cannot be anagrams
if ( s1.length() != s2.length() ) {
return false;
}
char[] c1 = s1.toCharArray();
char[] c2 = s2.toCharArray();
Arrays.sort(c1);
Arrays.sort(c2);
String sc1 = new String(c1);
String sc2 = new String(c2);
return sc1.equals(sc2);
}`