首页 > 解决方案 > 即使条件为真,为什么我的方法返回 false?

问题描述

public class Lab3Exercises {

public static void main(String[] args){
    Scanner s = new Scanner([System.in](https://System.in));
    System.out.println("Please enter a word to check if it is a palindrome");
    String myP = [s.next](https://s.next)();
    System.out.println(palindrome(myP));
}

public static boolean palindrome(String p){
    String myWord = p;
    String reverseWord = "";
    int i = 1;
    while (i < myWord.length()){
        reverseWord = myWord.charAt(i) + myWord.substring(0, i) + myWord.substring((i + 1), myWord.length());
        i++;
    }
    if (reverseWord.equals(myWord)) {
        return true;
    }
    else{
        return false;   
    }
}

我检查了一下,reverseWord 与 myWord 完全相同,但每次都返回 false。我试过汉娜、赛车等。他们都返回假

标签: java

解决方案


让我们从更简单的例子开始。

  • 例如,如果p长度为 1 s(回文),则您将设置reverseWord为空字符串。由于i从 1 开始,不小于长度,所以循环不运行。由于空字符串不等于s,因此该方法返回 false。
  • 输入tt(另一个回文)。您正在循环运行一次,设置reverseWord"t" + "t" + ""= "tt"。在这种情况下,该方法正确返回 true。
  • 输入obo:您reverseWord首先设置为boo,然后设置为"oob"( "o" + "ob" + ""),丢弃第一个值。

我认为您需要再次考虑您的逻辑。

提示:学习使用调试器。


推荐阅读