java - 回文测试仪

标签 java palindrome

所以我已经编写了大部分代码并且它可以工作。除了迭代方法不断显示它不是回文,无论输入什么。我不知道如何补救它,这里是代码。

//David Crouse Assignment 2
import java.util.Scanner;


public class Assignment2 {

public static boolean loop = false;
//main
public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Welcome to the Palindrome Checker!");
    do{
        System.out.print("Enter a string to check if it is a palindrome. ");
        System.out.print("Enter x to exit.");
        String word = input.nextLine();
        word = word.replaceAll("\\s","");
        word = word.toLowerCase();
        //Exit Program
        if(word.equalsIgnoreCase("x")){
            System.out.println("End of program. Good Bye!");
            System.exit(0);
        }
        if(iterativePalindromeChecker(word)){
            System.out.println("Iterative Result: Palindrome!");
        }else{
            System.out.println("Iterative Result: Not a palindrome");
        }
        if(recursivePalindromeChecker(word)){
            System.out.println("Recursive Result: Palindrome!\n");
        }else{
            System.out.println("Recursive Result: Not a palindrome\n");
        }

        loop = true;
    }while (loop == true);
}
//Iterative Method
public static boolean iterativePalindromeChecker(String str){
    boolean result = false;

    int length  = str.length();
    int i, begin, end, middle;

    begin  = 0;
    end    = length - 1;
    middle = (begin + end)/2;

    for (i = begin; i <= middle; i++) {
        if (str.charAt(begin) == str.charAt(end)) {
            begin++;
            end--;
        }
        else {
            break;
        }
    }
    if (i == middle + 1) {
        result = false;
    }
    return result;

}


//Recusive Methods
public static boolean recursivePalindromeChecker(String str){
    if(str.length() == 0 || str.length() == 1)
        return true;
    if(str.charAt(0) == str.charAt(str.length()-1))
        return recursivePalindromeChecker(str.substring(1,str.length()-1));
    return false;
}

}

最佳答案

您的迭代方法永远不会将 result 设置为 true。这是修改后的版本:

public static boolean iterativePalindromeChecker(String str){   
    int length  = str.length();
    int i, begin, end, middle;

    begin  = 0;
    end    = length - 1;
    middle = (begin + end)/2;

    for (i = begin; i <= middle; i++) {
        if (str.charAt(begin) == str.charAt(end)) {
            begin++;
            end--;
        }
        else {
            return false;
        }
    }
    return true;
}

关于java - 回文测试仪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25029772/

相关文章:

java - '无法解析符号 Gson',它不允许我导入

java - 在 JavaDoc 中记录 setter/getter、属性和构造函数时,有没有办法避免文档重复?

java - Hibernate:如何映射到静态表?

c - 找到给定回文日期的最近回文日期

Javascript:回文函数未定义?

list - 检查列表是否是回文。如果没有,插入元素使其成为回文。 (序言)

java - 如何将 lib Linear 与 weka gui 一起使用?

java - 如何在映射器(Hadoop)中使用 MATLAB 代码?

algorithm - 如何检测回文的第​​一次出现

c++ - 为什么删除此return语句会影响整个递归函数的结果?