0

我正在构建一个类,该类检查输入是否包含回文并仅返回回文项(如果存在)。我已经能够开发以下内容,并且它可以毫无错误地编译和运行,但我没有从中获得任何回报。

谁能发现我的错误在哪里?

public class Palindrome {

public static boolean isPalindrome(String word) {

    String back = word.charAt(word.length() - 1) + "";
    for (int i = word.length() - 2; i >= 0; i--) {
        back = back + word.charAt(i);
    }
    if (word == back) {
        return true;
    }
    return false;
}


public static void main(String[] args) {
    for (int i = 0; i < args.length; i++) {
        if (isPalindrome(args[i]) == true) {
            System.out.println(args[i]);
        }
    }

}

}

我认为问题在于主要方法,特别是在 if 语句中,但我不确定为什么它不起作用。

public static void main(String[] args) {
    for (int i = 0; i < args.length; i++) {
        if (isPalindrome(args[i]) == true) {
            System.out.println(args[i]);
        }
    }

}

提前感谢您提供的任何帮助。我很感激你的时间!

4

4 回答 4

1

借调 .equals() 错误。

此外,您可以使用内置的字符串反转过程轻松检查回文:

String a = "sampleelpmas";
String b = new StringBuffer(a).reverse().toString();

a.equals(b); //TRUE
于 2013-09-04T23:01:11.083 回答
1

对于第一部分,您可以使用 来反转它back = new StringBuilder(word).reverse().toString(),这是更简洁的代码,也更优化(也更快,但在这里无关紧要)。

但是您的问题在于比较字符串,== 检查两个对象是否相等,这对于 2 个字符串永远不会成立,即使它们与您期望的一样。使用word.equals(back),它检查字符串的文本内容是否匹配。

于 2013-09-04T23:01:48.567 回答
0

常见错误。字符串比较是错误的。不要使用==运算符。使用equals()方法。

更改word == backword.equals(back)

休息应该是对的。

于 2013-09-04T22:58:15.457 回答
0

您不应该使用 == 来评估 String 相等性,而是使用 equals() 。

if (word.equals(back))
于 2013-09-04T22:59:32.113 回答