日期:2014-05-20  浏览次数:20712 次

关于equals的问题
import java.util.Scanner;

public class Palindrome {
public static void main(String[] args) {
Scanner input= new Scanner(System.in);
System.out.println("请输入一字符串:");
String str= input.next();
StringBuffer strTest= new StringBuffer(str);
strTest.reverse();
System.out.println(strTest);
if(str.equals(strTest)){
System.out.println("该字符串是回文字符串");
}
else{
System.out.println("该字符串不是回文字符串");
}
}
}
如果我输入aaabbbaaa 那么str.equals(strTest)应该为true,且输出是回文字符串,但是输出结果却是 不是回文,求解~~

------解决方案--------------------
因为你的两个比较中if(str.equals(strTest)){
str和strTest一个是String一个是StringBuffer
改成这样就行了:
public class test {
public static void main(String[] args){


Scanner input= new Scanner(System.in);
System.out.println("请输入一字符串:");
String str= input.next();
StringBuffer strTest= new StringBuffer(str);

String st=strTest.reverse().toString();


if(str.equals(st)){
System.out.println("该字符串是回文字符串");
}
else{
System.out.println("该字符串不是回文字符串");
}

}
}
------解决方案--------------------
str是Stirng字符串,而strTest是StringBuffer对象,当然不能相等,
这个if判断应该这样: if(str.equals(strTest.toString())){ .....}else{.....}
这样既可。