首页 > 解决方案 > 尽管字符串相同,.equals 方法仍返回 false

问题描述

我正在尝试做一个回文程序。我是初学者。这是我的代码:

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
    // palindrome

        System.out.println("Enter a statement");
        Scanner scan = new Scanner(System.in);
        String userInput = scan.nextLine();
        StringBuilder str;
        str = new StringBuilder(userInput.replace(" ", "").toLowerCase().trim().toString());
        System.out.println(str);
        String reversed = new StringBuilder(str).reverse().toString().trim();
        System.out.println(reversed);

        if(str.equals(reversed)){
            System.out.println("is palindrome");
        }else{
            System.out.println("not a palindrome");
        }
    }
}

我尝试了调试模式和一切。无法弄清楚为什么它返回不是回文。

标签: javastring

解决方案


str是一个StringBuilder,不是一个Stringreplaced是一个String。当操作数不是 another 时StringBuilder.equals将永远不会返回。trueStringBuilder

制作str一个String,以便您使用String.equals一个字符串并将其与另一个字符串进行比较。


推荐阅读