2014-02-21 3 views
2

Я делаю очень простое приложение в Java-коде, но по какой-то причине оно не работает. его палиндром.check palindrome in java code

вот код.

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!"); 
    } 
} 

}`

По какой-то причине проверка в Условный оператор не идет, как нужно. Как вы можете видеть, я проверил omgekeerd и ввод, и я также проверил ранее длину omgekeerd, чтобы увидеть, есть ли пробелы.

Может кто-нибудь помочь мне!

заранее спасибо

поздравления Mauro Palsgraaf

+0

Проверить http://stackoverflow.com/questions/4138827/check-string-for-palindrome?rq=1 –

ответ

1

Вы на самом деле не реверсивная строки, выглядит как omgekeerd будет в том же порядке, в качестве входных данных.

Заменить для с for(int i = length-1; i >= 0; i--) {

2

Ваша логика ошибочна. Вы восстанавливаете новую строку, добавляя каждый символ ввода в том же порядке, а затем проверяете, что обе строки равны. Поэтому ваш метод всегда говорит, что вход является палиндром.

Вы должны построить новую строку, добавив символы в обратном порядке.

Или вы могли бы сделать это быстрее, проверяя, что п-й символ такой же, как символ в длине - 1 - п позиции, для каждого п между 0 и длиной/2.

0

Это может быть упрощена лот

+0

В Netbeans я получить желтую линию под равняется заявляя, что его на несовместимых типов. Знаете ли вы, почему? Я исправил это с помощью этого . Boolean isPalindroom = input.equals (new StringBuilder (input) .reverse(). ToString()); – Vahx

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"); 
}