首页 > 解决方案 > for循环的回文问题

问题描述

嗨,我正在尝试建立一个回文,但它似乎不起作用,请你帮忙。我应该在爸爸身上得到真,在其他事情上得到假

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    System.out.println("Enter Your User Name");
    String userInput =input.nextLine();
    System.out.println(abcDEF(userInput));
}
static boolean abcDEF(String userInput) {
    StringBuilder s1 = filter(userInput);
    StringBuilder s2 = reverse(userInput);
    return s1.toString() == s2.toString();
}
static StringBuilder filter(String userInput) {
    StringBuilder sb = new StringBuilder();
    char[] inputData = userInput.toCharArray();

    for (int i = 0; i < userInput.length(); i++) {
        if (userInput.matches("[a-zA-Z0-9]+")) {
            sb.append(inputData[i]);
        }
    }
    return sb;
}

static StringBuilder reverse(String userInput) {
    StringBuilder sb = filter(userInput);
    sb.reverse();
    return sb;
}

标签: java

解决方案


将您的abcDEF()更改为此(最后一行):

static boolean abcDEF(String userInput) {
    StringBuilder s1 = filter(userInput);
    StringBuilder s2 = reverse(userInput);
    return s1.toString().equals(s2.toString());
}

您正在比较代码中两个字符串的引用,这在您的情况下是不同的。相反,您应该比较字符串的内容。这就是比较字符串内容的方式。


推荐阅读