使用args的回文;帮我找到错误?

时间:2013-09-04 22:55:58

标签: java string palindrome args

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

有人能发现我的错误所在吗?

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 个答案:

答案 0 :(得分:1)

借调.equals()错误。

此外,您可以使用内置的字符串撤消程序轻松检查回文:

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

a.equals(b); //TRUE

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

word == back更改为word.equals(back)

休息应该是正确的。

答案 3 :(得分:0)

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

if (word.equals(back))