Überprüfen auf Palindrom

chillerStudent

Bekanntes Mitglied
Hallo,

ich muss ein Programm schreiben, das überprüft, ob das Wort in der Komandozeile ein Plindrom ist.

Folgendes hab ich :

Java:
public static void main(String[] args) {
		
		for(int i=0; i<args.length; i++) {
			boolean pal=true;
			if(args[i] != args[args.length - (i+1)]) {
				pal=false;
				System.out.println("Es ist kein Palindrom");
			} else {
				System.out.println("Palindrom!");
			}
		}
	}

Das Problem: Er springt immer in den else zweig. Warum?
 
Weil man Strings mit equals vergleicht?
Außerdem vergleichst du verschiedene Wörter und nicht, ob ein Wort ein Palindrom ist.
Das Palindrom-Thema scheint es hier häufiger zu geben. Benutze die Suchfunktion.
 
Mal knallhart ausgedrückt, weil dein code totaler bullshit ist!
Onkel google wird dir sicherlich helfen!
 
schreibe mal ein

Java:
System.out.println(i+": "+args[i]+" != "+(args.length - (i+1))+": "+args[args.length - (i+1)] );
vor dein if...

strings vergleicht man mit equals

und String[] args sind keine einzelnen buchstaben, sondern wörter
 
ich drücks auch mal knallhart aus


VERWENDE GOOGLE ODER DIE SUFU ...

ich weis ganz genau das wir hier in diesem forum schon mal die diskusion über "palindrome" hatten ... einfach mal danach suchen ... schaffst du das alleine ?
 
Danke schon mal. Hab mal bisschen gestöbert.

Ich probiers mal mit worten:

In args sind kein Buchstaben, sondern ganze Wörter. Verstanden. Jetzt muss ich die Wörter(Strings) in Buchstaben(char) umwandeln und dann diese vergleichen.

Ist das richtig?
 
Ich probiers mal mit worten:

In args sind kein Buchstaben, sondern ganze Wörter. Verstanden.
Das hört sich so ein bisschen nach einer Frage an?
In args ist das enthalten, was Du beim Programmstart als Parameter dem Programm mitlieferst - und das in Form von Strings.
Vermutlich soll Deinem Programm ja nur ein Wort als Startparameter mitgeliefert werden, welches überprüft werden soll. Daher hat Deine Abfrage immer true geliefert da args.lenth = 1 und somit immer args[0]==args[1 - (0+1)] immer wahr ist. (hat jetzt nichts mit Deinem Problem zu tun)

Zu Deinem Problem:
String bietet die Methode charAt(i) um einzelne Buchstaben eines Strings auszulesen.
 
Zu Deinem Problem:
String bietet die Methode charAt(i) um einzelne Buchstaben eines Strings auszulesen.

so?

Java:
public static void main(String[] args) {
		char[] c =  new char[args.length];
		
		for(int j=0; j<args.length; j++) {
			//c[j]=args[j].toCharArray();
			c[j]=args[j].charAt(j);
		}
		System.out.println(c);
}
 
Was soll das machen?

hab mir anders überlegt:

Java:
		public static void main(String[] args) {
		
		String s = s=args[0];
		char[] c =  s.toCharArray();
		boolean pal=true;
		for(int i=0; i<c.length; i++) {
			if(c[i] != c[c.length - (i+1)]) {
				pal=false;
			}
		}
		if(pal==false) {
			System.out.println("kein pal");
		} else {
			System.out.println("pal");
		}
}

Das Wort wird zu string und das String zu ein char Array. Jedem behälter von c wird ein buchstabe abgespeichert und gleichzeit überprüft ob der erste und der letzte buchstabe gleich ist.
 

Zurück
Oben