Java程序输出应该是true,但是为什么返回false?

时间:2018-04-14 06:56:20

标签: java string stringbuffer

我正在检查String "nitin"是否是回文,但它返回false。

请有人帮我解决这个问题。

public static void main(String[] args) {
    StringBuffer sb = new StringBuffer("nitin");
    sb.reverse();
    String rev = sb.toString();

    System.out.println(sb);
    System.out.println(rev);

    if (sb.equals(rev)) {
        System.out.println("true");
    } else {
        System.out.println("false");
    }
}

3 个答案:

答案 0 :(得分:4)

您正在将StringBuffer与String进行比较。 试试if (sb.toString().equals(rev)) {

答案 1 :(得分:1)

sb StringBuffer rev String 。这两个不同类型的对象无法相互比较“字符串值相等”。

使用if (sb.toString().equals(rev)):这样可以比较两个字符串是否相等,因为sb.toString()被转换为字符串。

此外,在开始时反转sb是错误的。这是因为在您声明String rev = sb.toString()时,sb已经被撤消了。在声明sb后再次致电sb.reverse(),取消反复rev。你的最终代码应该是

    StringBuffer sb = new StringBuffer("nitdin");
    sb.reverse(); // reversed sb
    String rev = sb.toString(); // rev is reversed sb to String
    sb.reverse(); // unreversed sb

    ...

    if (sb.toString().equals(rev)) // String-string comparison

答案 2 :(得分:0)

您可能会误解StringBuffer和String。您的代码可能需要更改

RewriteCond %{QUERY_STRING} ^$