因此,当我用任何单词运行此代码时,它总是返回false。第一个String接受该单词,然后将其更改为小写。然后我正在构建一个新的String,将它与另一个字符串进行比较,该字符串作为原始单词的反向附加。我没有看到什么,或者你能告诉我它有什么问题吗?
public class Palindromes
{
public static void main(String[] args)
{
int count = Integer.parseInt(args[0]);
for(int i = 1; i <= count; i++)
{
System.out.print(isPalindrome(args[i]) + " ");
}
}
public static boolean isPalindrome(String s)
{
String str = s.toLowerCase();
StringBuilder orig_str = new StringBuilder(str);
StringBuilder revStr = new StringBuilder();
for (int i = str.length()-1; i >= 0; i--)
{
revStr.append(orig_str.charAt(i));
}
boolean isPal = (revStr == orig_str);
return isPal;
}
}
答案 0 :(得分:4)
将两个不同的StringBuilder
实例与==进行比较,无论其内容如何,都会向您提供错误,因为它们不是同一个实例。
尝试revStr.toString().equals(str)
似乎StringBuilder
无法覆盖Object
equals
,因此您必须在equals
上执行String
来自StringBuilder
s。
BTW,StringBuilder
有一个reverse
方法,因此您可以在一行中重写您的方法:
public static boolean isPalindrome(String s) {
return new StringBuilder(s.toLowerCase()).reverse().toString().equals(s.toLowerCase());
}