# Palindrom Test mit Char-arrays!



## marioO (2. Dez 2007)

hi, ich bin im 1. Semester Informatik und hock gerade an meiner Hausarbeit,
leider komme ich mit dem Palindrom tester nicht weiter und hockt schon den ganzen tag davor und es tut sich nichts, Anna bleibt "Kein Palindrom".

Die Aufgabe lautet:
--
*Einlesen eines Textes von der Konsole. Dieser Text kann neben Buchstaben und Zahlen
auch Leerzeichen und die Sonderzeichen .,!?:;- enthalten.

Ausgabe aller Wörter mit Palindromeigenschaft.
*
--

Kann mir vll jemand helfen und mir sagen wo der Fehler in der isPalindrome methode liegt?

Hier mein Quelltext:




```
public class StringTester
{

public static String getInput (String String)
{

String input = new String();
java.io.BufferedReader reader = new java.io.BufferedReader( new java.io.InputStreamReader( System.in ) );
try
{
input = reader.readLine();
}
catch ( Exception e )
{
}
System.out.println( input );

return String;
}

public static boolean isPalindrome( String string )


{


char[] s = string.toCharArray();

char[] r = new char[s.length];
        
    for (int i = 0; i < s.length; ++i)
    {
        r[s.length-1-i] = s[i];
    }

    if (s.equals(r))
            {System.out.println ("ist Palindorm!");
            return true; }
            
    else
            {System.out.println ("Ist kein Palindorm!");
            return false;}

          


}
public static void main ( String [] args)
{

while(true)
    {
    System.out.print ("Bitte einen Text eingeben: ");

    isPalindrome(getInput(""));
}
}
}
```


Danke


----------



## Gast (2. Dez 2007)

schreib doch mal "Anna" rückwärts -> "annA", ich seh da einen "großen" unterschied


----------



## DocRandom (3. Dez 2007)

..oder probiere mal Regallager bzw Lagerregal 

lg
DocRandom


----------



## Tharsonius (3. Dez 2007)

Du vergleichst Zeichenweise. Dabei unterscheidet Java natürlich zwischen Großbuchstaben und Kleinbuchstaben. Dies sind komplett verschiedene Zeichen. Also entweder musst Du Deine Funktion nur mit Klein- oder Großbuchstaben füttern oder zum vergleichen generell auf eines der beiden wandeln.


Andere Sache: Du kopierst Dir derzeit den kompletten String, dies ist gar nicht nötig. Arbeite einfach mit 2 Variablen. Setze i aufs erste und j aufs letzte Element. Dann vergleichst Du immer die beiden Zeichen miteinander. Wenn sie gleich sind i erhöhen und j verringern. Das ganze machst Du solange wie i>j ist.

Sobald die Variablen aneinander vorbei laufen oder auf dem selben Feld landen bist Du fertig.


----------

