[英]Java String Comparison fails
为什么此字符串比较失败?
package javaapplication57;
/**
*
* @author amit
*/
public class JavaApplication57 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
String a = "anagram";
String b = "margana";
int len = a.length();
char[] temp = a.toCharArray();
char[] temp2 = b.toCharArray();
int len2 = b.length();
for(int j = 0; j<len-1; j++)
{
for(int i = 0; i<len-1; i++)
{
if(temp[i]>temp[i+1])
{
char t = temp[i];
temp[i] = temp[i+1];
temp[i+1] = t;
}
}
}
//System.out.println(temp);
for(int j = 0; j<len2-1; j++)
{
for(int i = 0; i<len2-1; i++)
{
if(temp2[i]>temp2[i+1])
{
char t = temp2[i];
temp2[i] = temp2[i+1];
temp2[i+1] = t;
}
}
}
//System.out.println(temp2);
if(temp.equals(temp2))
{
System.out.println("yes");
}
}
}
您不比较字符串。 您正在比较char
数组。 数组不会覆盖Object
的equals
,因此equals
行为与==
相同。 您可以从要比较的数组中创建String
,并在结果String
上运行equals
。
if(new String(temp).equals(new String(temp2)))
假设您未使用内置方法,则必须首先检查以下情况:两个字符串的长度必须相等。 在检查长度是否相等后,无需遍历两个字符串就无需使用char数组。
public static boolean equals(String str, String str2){
if(str.length() != str2.length()){
return false;
}
for(int i=0; i<str.length(); i++){
if(str.charAt(i) != str2.charAt(i)){
return false;
}
}
return true;
}
只需使用Java中的.equals
方法
String a = "anagram";
String b = "margana";
if(a.equals(b){
System.out.pring("equals");
}else{
System.out.pring("not equals";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.