# Auf Palindrom Prüfen



## NoXiD (10. Apr 2008)

Hallo!

hab ein Problem  :roll: 
Ich will ein Wort auf ein Palindrom Prüfen, und wenn es ein Satz ist, den ganzen satz...

hab das mit dem Palindrom WORT schon hinbekommen, aber jetzt habe ich wenn 1 oder mehr Leerzeilen im wort sind (=satz)  alle Buchstaben ohne Leerzeilen in ein zweites array getan, aber mein Compiler gibt mir folgendes aus :  

[C@10b62c9 [C@10b62c9 [C@10b62c9 [C@10b62c9 [C@10b62c9 [C@10b62c9 [C@10b62c9 [C@10b62c9 [C@10b62c9 [C@10b62c9 [C@10b62c9 [C@10b62c9 [C@10b62c9 

wie gesagt, sollte nur der ganze Satz ohne Beistriche bzw. Leerzeilen oder sonstige Sonderzeichen nicht berücksichtit werden(dh. alles sollte sozusagen 1 wort sein)

ich tippe auf einen Typecast Fehler, nur wüsste ich ned wo ...   :bahnhof: 

kann mir wer helfen?  :lol: 

aja der code:


```
public class Palindrom{
	public static void main(String[]args){
		int lenge,i,leeranz=0,k=0;
		//Wort eingeben
		char[]wort={' ','L','a','g','e','r','r','e','g','a','l',' ','f'};
		lenge=wort.length;
		boolean Palindrom=true;
		
		for(i=0;i<wort.length;i++){ //Prüft ob Leerzeilen Vorhanden sind und zählt sie mit
			if(wort[i]>=65&&wort[i]<=91||wort[i]>=97&&wort[i]<=123){
				
			}else{
				leeranz++;
			}
		}
		
		if(leeranz==0){ //Ohne leerzeilen das wort auf palindrom prüfen
		
			System.out.print("Das Wort lautet:\t");
	
			for(i=0;i<wort.length;i++){
				System.out.print(wort[i]);
				//Großbuchstaben in Kleinbuchstaben umwandeln
				if(wort[i]>=65&&wort[i]<=91){
					wort[i]=(char)(wort[i]+32);
				}
				//wenn das erste Wort != dem letzten Wort->Palindrom=false
				if(wort[i]!=wort[wort.length-(i+1)]){
					Palindrom=false;
				}
			}
		
			//Ausgabe
			if(Palindrom==false){
				System.out.print("\n\t\t->Es ist kein Palindrom!");
			}else{
				System.out.print("\n\t\t->Es ist ein Palindrom!");
			}
		}
		
		if(leeranz>0){//Mit leerzeilen den Satz in ein anderes Array schreiben, und die Leerzeilen bzw. sonderzeichen auslassen
			
			char[]wort2=new char[wort.length-leeranz];
			for(i=0;i<wort.length;i++){
				if(wort[i]>=65&&wort[i]<=91||wort[i]>=97&&wort[i]<=123){
					wort2[k]=wort[i];
					k++;
				}
				System.out.print(wort2[k]+" ");
			}
		}
	}
}
```


----------



## NoXiD (10. Apr 2008)

JIPIEEEEEEE!!!!


habs schon ^^

wens interessiert, hier der Code:


```
public class Palindrom{
   public static void main(String[]args){
      int lenge,i,leeranz=0,k=0;
      //Wort eingeben
      char[]wort={'N','a','i','v','e',' ','N','e','g','e','r',' ','r','e','g','e','n',' ','E','v','i',' ','a','n','.'};
      lenge=wort.length;
      boolean Palindrom=true;
      
      for(i=0;i<wort.length;i++){ //Prüft ob Leerzeilen Vorhanden sind und zählt sie mit
         if(wort[i]>=65&&wort[i]<=91||wort[i]>=97&&wort[i]<=123){
            
         }else{
            leeranz++;
         }
      }
      
      if(leeranz==0){ //Ohne leerzeilen das wort auf palindrom prüfen
      
         System.out.print("Das Wort lautet:\t");
   
         for(i=0;i<wort.length;i++){
            System.out.print(wort[i]);
            //Großbuchstaben in Kleinbuchstaben umwandeln
            if(wort[i]>=65&&wort[i]<=91){
               wort[i]=(char)(wort[i]+32);
            }
            //wenn das erste Wort != dem letzten Wort->Palindrom=false
            if(wort[i]!=wort[wort.length-(i+1)]){
               Palindrom=false;
            }
         }
      
         //Ausgabe
         if(Palindrom==false){
            System.out.print("\n\t\t->Es ist kein Palindrom!");
         }else{
            System.out.print("\n\t\t->Es ist ein Palindrom!");
         }
      }
      
      if(leeranz>0){//Mit leerzeilen den Satz in ein anderes Array schreiben, und die Leerzeilen bzw. sonderzeichen auslassen
         
         System.out.print("Der Satz lautet:\t");
         for(i=0;i<wort.length;i++){  //Satz in Urzustand ausgeben
         	System.out.print(wort[i]);
         }
         
         char[]wort2=new char[wort.length-leeranz];
         for(i=0;i<wort.length;i++){ //Satz ohne Sonderzeichen in eigenes Array
            if(wort[i]>=65&&wort[i]<=91||wort[i]>=97&&wort[i]<=123){
               wort2[k]=wort[i];
               k++;
            }
         }
         System.out.println();
         for(i=0;i<wort2.length;i++){//Großbuchstaben auf Kleinbuchstaben machen
         	if(wort2[i]>=65&&wort2[i]<=91){
				wort2[i]=(char)(wort2[i]+32);
         	}
         }
         for(i=0;i<wort2.length;i++){//Prüfen wie ein Wort
         	if(wort2[i]!=wort2[wort2.length-(i+1)]){
               Palindrom=false;
         	}
         }
         
         System.out.println();
         if(Palindrom==true){//Ausgabe ob Palindrom oder nicht
         	System.out.println("----> Ist ein Palindrom");
         }else{
         	System.out.println("----> Ist kein Palindrom");
         }
      }
   }
}
```


----------



## Wildcard (10. Apr 2008)

```
public static boolean isPalindrom(String input)
{
   input = input.replaceAll("\\w","");
   StringBuffer buffer = new StringBuffer(input);
   buffer.reverse();
   return buffer.toString().equals(input);
}
```


----------



## Marco13 (10. Apr 2008)

Wenn schon fies, dann richtig:

```
public static boolean isPalindrom(String input)
    {
        return new StringBuffer(input.replaceAll("\\W","")).reverse().toString().equalsIgnoreCase(input.replaceAll("\\W",""));
    }
```
(  ) (Muss übrigens sein großes "W" sein)


----------



## Wildcard (10. Apr 2008)

Ach mist, ich wollte eigentlich ein kleines s. DIe beiden verwechsel ich immer


----------



## Butterfly (11. Apr 2008)

Was bedeutet denn "\\W"?

Ich hätte übrigens auch noch ein eigenes Palindromprogramm anzubieten, da werden aber auch Leerzeichen etc. berücksichtigt.  :wink:


----------



## Wildcard (11. Apr 2008)

\\W heißt: non-word character
Ich wollte aber \\s = white space (leerzeichen, tab,...)


----------



## Butterfly (11. Apr 2008)

Ah, vielen Dank. Woher weiß man das? Gibt es dafür eine Liste?


----------



## Wildcard (11. Apr 2008)

Das sind RegExe:
http://java.sun.com/javase/6/docs/api/java/util/regex/Pattern.html


----------



## Butterfly (11. Apr 2008)

Oh, super. Danke für den Link!


----------

