# Kleiner Palindromtest



## shino (24. Okt 2009)

hallo zusammen,
ich muss für die uni ein programm schreiben, welches einen string testet, ob es ein palindrom ist. ich hab diesen code bisher erreicht

```
public class Palindrome {
  public static void main(String[] args) {
    String pal = args[0].toLowerCase();
    System.out.Println(pal.isPalindrome());
  }
  public static boolean isPalindrome(String[] pal) {
    int max=pal.length;
    int i;
    for (i=0;i < pal.length/2;i++) {
      if (pal[i] != pal[max-i]) { return false;}
    }
    return true;
  }
}
```

jedoch gibt es mir beim kompilieren immer eine fehlermeldung bezüglich der System.out.println(pal.isPalindrome()); aus... weiss jemand wo der fehler versteckt ist bzw. wie ich ihn beheben kann?


----------



## Ark (24. Okt 2009)

Man beachte Groß- und Kleinschreibung.

EDIT: Außerdem testest du alles Mögliche, aber nicht auf Palindrom. oO Das Argument sollte wohl vom Typ String und nicht String[] sein.

Ark


----------



## 0x7F800000 (24. Okt 2009)

shino hat gesagt.:


> diesen code bisher erreicht




```
public static boolean isPalindrome(String s){
		return s.length()<=1 ||
			  (s.charAt(0)==s.charAt(s.length()-1) && isPalindrome(s.substring(1,s.length()-1)));
	}
```


----------



## Marco13 (24. Okt 2009)

@Andrey: Und wenn diese Übung zufällig im Kapitel "Schleifen und if-Abfragen" gemacht werden soll?


----------



## shino (24. Okt 2009)

```
public class Palindrome {
  public static void main(String[] args) {
    String pal = args[0].toLowerCase();
    isPalindrome(pal);
    System.out.println(pal.isPalindrome());
  }
  public static boolean isPalindrome(String pal) {
    int max=pal.length();
    int i;
    for (i=0;i < max/2;i++) {
      if (pal.charAt(i) != pal.charAt(max-i)) { return false;}
    }
    return true;
  }
}
```
so weit so gut, nun zickt es nur noch bei der Ausgabe rum... 

wie mach ich es, das es mir, wenn der boolean true ist, ein true ausgibt und wenn der boolean false is, ein false? das müsst doch so gehn, wie ich das geschrieben hab?

edit: haha ja habs selbst rausgefunden, ich depp ^^ 

doch schon ergibt sich das neue problem:

wenn ichs nun teste mit einem x-beliebigen satz (z.b. test) oder so
kommt 
	
	
	
	





```
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 4
        at java.lang.String.charAt(String.java:686)
        at Palindrome.isPalindrome(Palindrome.java:11)
        at Palindrome.main(Palindrome.java:4)
```

edit: ok, habs hingekriegt... musste 
	
	
	
	





```
pal.charAt(max-i)
```
 durch 
	
	
	
	





```
pal.charAt((max-1)-i) ersetzen, dann klappts :)
```


----------

