在java代码中检查回文

时间:2014-02-21 21:59:51

标签: eclipse class palindrome

我在java代码中创建了一个非常简单的应用程序,但由于某些原因它不起作用。它是一个回文检查器。

这是代码。

MAIN:

public class main { public static void main(String[] args) { Palindroom.palindroomChecker("RACECAR"); } }

`Palindroom类:

公共课Palindroom {

public static void palindroomChecker(String input) {
    String omgekeerd = "";
    boolean isPalindroom = false;
    int length = input.length();
    for(int i = 0; i < length; i++ ) {
        String hulp = "" + input.charAt(i);
        omgekeerd = omgekeerd + hulp;
    }
    System.out.println(omgekeerd);
    System.out.println(input);
    if(omgekeerd.equals(input)){
        System.out.println("DIT IS EEN PALINDROOM!");
    }
    else {
        System.out.println("HELAAS, DIT IS GEEN PALINDROOM!");
    }
}

}`

由于某种原因,if语句中的检查不会像往常一样。你可以看到我检查了omgekeerd和输入,我还检查了omgekeerd的长度,看是否有明确的空格。

有人可以帮助我吗?

提前致谢

问候Mauro Palsgraaf

5 个答案:

答案 0 :(得分:2)

你的逻辑是有缺陷的。您通过以相同的顺序附加输入的每个字符来重构新字符串,然后检查两个字符串是否相等。所以你的方法总是说输入是回文。

您应该通过以相反的顺序附加字符来构造一个新字符串。

或者你可以通过检查第n个字符与长度为1 - n位置的字符相同,对于0和长度/ 2之间的每个n,可以加快速度。

答案 1 :(得分:1)

你实际上并没有反转字符串,看起来像omgekeerd将与输入的顺序相同。

替换为for(int i = length-1; i >= 0; i--) {

答案 2 :(得分:0)

这可以简化很多

 boolean isPalindrome = new StringBuilder(input).reverse().equals(input);

答案 3 :(得分:0)

也许这对你有用吗?

String str = "madam i'm adam."; // String to compare
str = str.replaceAll("[//\\s,',,,.]",""); // Remove special characters
int len = str.length();
boolean isSame = false;

for(int i =0; i<len;i++){
    if(str.charAt(i) == str.charAt(len-1-i)){
        isSame = true;
    }
    else{
        isSame = false;
        break;
    }
}
if(isSame){
    System.out.print("Equal");
}
else{
    System.out.print("Not equal");
}

答案 4 :(得分:0)

i=0;
j=str.length()-1; //length of given string
String str; // your input string
while((i<j)||(i!=j)){
    if(str.charAt(i)!=str.charAt(j)){
               System.out.println("not palindrome");
                     break;
                   }
    i++;
    j--;
}
System.out.print("palindrome");
//this can used for checking without the need of generating and storing a reverse string