In einem Palindrom 2 Buchstaben vergleichen

Rapper47

Mitglied
Guten Abend User

Ich bin neu hier und freue mich das ich dieses Forum entdeckt habe, da ich jetzt in der Schule mit Java zum programmieren anfange.

Meine erste Frage die ich gerne stellen würde, ist bezüglich Vergleiche in Java.

Der befehl für Vergleiche in Java ist ja "==". Und in meiner Aufgabe muss ich in einem Palindrom vergleichen, ob das erste Zeichen gleich dem Letzten ist.

Meine Frage daher, kann man Java anweisen, das es die erste Position und die Letzte Position einer Zeichenkette vergleicht (Satzzeichen und Leerzeichen nicht beachtend)

Ich hätte eine Variable bestimmt in der Form: char palindrom = ("Otto")

Wäre dieser Ansatz in ordnung?

Ich würde mich über Rückmeldungen und Ratschläge freuen

Mit freundlichen Grüßen, Rapper47
 
G

Gast2

Gast
Der befehl für Vergleiche in Java ist ja "==".
Das stimmt nicht immer, wenn du Objekte vergleichen willst, dann nimmst du equals.

Meine Frage daher, kann man Java anweisen, das es die erste Position und die Letzte Position einer Zeichenkette vergleicht (Satzzeichen und Leerzeichen nicht beachtend)
String#charAt(i) liefert dir den character an Stelle i. Du kannst dir damit also den ersten und letzten Buchstaben holen und die beide dann vergleichen.
 

Rapper47

Mitglied
Ok, danke für die schnelle Antwort..

Also ich habe jetzt versucht dies hier zu versuchen ( bitte nicht schimpfen, bin noch Anfänger)

Java:
String palindrom = ("Otto")

  if (String#charAt 1 == [oder equals, aber Buchstaben sind ja keine Objekte, oder?] String#charAt 4) {
                      System.out.println ("Es ist ein Palindrom") }

Nur mein jcreator gibt mir unzählige Errors aus, könnt ihr mir weiterhelfen?

MFG
 
G

Gast2

Gast
Naja, das ist von vorne bis hinten kein Java code :autsch:

Java:
String palindrom = "Otto";

if (palindrom.charAt(0) == palindrom.charAt(3)) {
   System.out.println("gleich");
}
 

Rapper47

Mitglied
Ok danke

Ja, ich habe jetzt das mit String verstanden und mit den Positionen der Buchstaben

Ich werde mich jetzt mal ans programmieren machen

Ich danke dir für deine Hilfe

MFG
 

Rapper47

Mitglied
So, ich habe es jetzt mit OTTO hingebracht, auch wenn es etwas grob gemacht ist, aber es funktioniert:

Java:
public class POS1_Uebung4_BSP2 {

	 public static void main (String[] args) {

	 	String palindrom = "OTTO";

	 	if (palindrom.charAt(0) == palindrom.charAt(3)) {

	 		if  (palindrom.charAt(1) == palindrom.charAt(2)) {
	 			System.out.println ("Es ist ein Palindrom");
	 		}
	 		
	 		} else {
	 			
			if (palindrom.charAt(0) != palindrom.charAt(3)) {
				 System.out.println ("Es ist kein Palindrom");
			} else {
				
			if (palindrom.charAt(0) == palindrom.charAt(3) & palindrom.charAt(1) != palindrom.charAt(2)) {
				System.out.println ("Es ist kein Palindrom");
			}
		  }
		}
	}
}

Eine Frage hätte ich jetzt noch, hier ist mein Code ja genau auf 4 Buchstaben bezogen, kann man es auch verallgemeinern das es für eine beliebige Zahl geht, oder wäre das zu kompliziert?

MFG
 
M

Marcinek

Gast
Es ist nicht kompliziet.

Man prüft erst, ob der String eine gerade Anzahl an Buchstaben hat.

Dann muss immer der erste Buchstabe = dem letzten , der zweite gleich dem vorletzten.

Du müsstest das Muster nun erkannt haben.

Dein Code überprüft nicht 100% ob es ein Palindrom ist.

Gruß,

Martin

P.S. Ein Lob auf deinen Lehrer keine GUI!! :applaus:
 

Landei

Top Contributor
Man kann auch mogeln:
Java:
String s = "reliefpfeiler";
String t = new StringBuilder(s).reverse().toString();
boolean isPalindrom = s.equals(t);
 

Rapper47

Mitglied
Ja, in unserer Schule programmieren wir nur ohne GUI^^

Ok, danke für die Anweisung

Ich verstehe zwar, wie der Code jetzt aufgebaut sein muss, damit dieser Vergleiche aufstellt.

Mein Ziel wäre es den Satz (Ein N**** mit Gazelle zagt im Regen nie) zu überprüfen ob er ein Palindrom ist.

Wenn ich meine Methode anwende, werde ich ja einen ellenlangen Code brauchen.. ???:L

Und noch eine Frage bezüglich der 100% Überprüfung, was fehlt denn dem Programm?

MFG

Edit: Danke @ Landei, so ist die schnelle Methode :)
 
Zuletzt bearbeitet:
G

Gast2

Gast
Wenn ich meine Methode anwende, werde ich ja einen ellenlangen Code brauchen.. ???:L

Nein eigentlich nicht. Obwohl - doch mit deiner Methode schon. ;) Eine Schleife ist das Zauberwort... Gehen wir mal davon aus das die Methode von Landei in einer Hausaufgabe nicht zulässig ist, hier wäre eine weiter Möglichkeit:

(weil mir grade langweilig)

Java:
	public static void main(String[] args) {

		String satz = "hier kommt dein Satz";
		int lenght = satz.length();
		if ((lenght % 2) != 0) {
			System.err
					.println("Anzahl der Buchstaben ungrade - kann kein Palindrom sein");
		} else {
			// gehen erstmal davin aus es ist ein Palindrom
			boolean isPalindrom = true;
			int j = lenght - 1;
			for (int i = 0; i < (lenght / 2); i++) {

				char links = satz.charAt(i);
				char rechts = satz.charAt(j);
				System.out.println(links + " <=> " + rechts);
				if (rechts != links) {
					isPalindrom = false;
					System.err
							.println("Kein Palindrom, first missmatch at index "
									+ i
									+ "("
									+ links
									+ ") and "
									+ j
									+ "("
									+ rechts + ")");
					break;
				}
				j--;
			}
			if (isPalindrom) {
				// keine Fehler beim Vergleichen
				System.out.println("Ist ein Palindrom");
			}
		}
	}
 
Zuletzt bearbeitet von einem Moderator:

Landei

Top Contributor
Den Code kann man noch ein wenig verbessern:
Java:
    public static void test() {

        String satz = "reliefpfeiler";
        int last = satz.length() - 1;
        // gehen erstmal davon aus es ist ein Palindrom
        boolean isPalindrom = true;
        for (int i = 0; i <= (last - 1) / 2; i++) {
            int j = last - i;
            char links = satz.charAt(i);
            char rechts = satz.charAt(j);
            System.out.println(links + " <=> " + rechts);
            if (rechts != links) {
                isPalindrom = false;
                System.out.printf("Kein Palindrom, erste Ungleichheit bei Index %d (%s) und %d (%s)\n",
                        i, links, j, rechts);
                break;
            }
        }
        if (isPalindrom) {
            System.out.println("Ist ein Palindrom");
        } 
    }

Übrigens können nach allgemeiner Definition auch ungeradzahlige Worte Palindrome sein, schließlich ist der mittlere Buchstabe zu sich selbst gleich.
 

Andi_CH

Top Contributor
So, ich habe es jetzt mit OTTO hingebracht, auch wenn es etwas grob gemacht ist, aber es funktioniert:

Java:
public class POS1_Uebung4_BSP2 {

	 public static void main (String[] args) {

	 	String palindrom = "OTTO";

	 	if (palindrom.charAt(0) == palindrom.charAt(3)) {

	 		if  (palindrom.charAt(1) == palindrom.charAt(2)) {
	 			System.out.println ("Es ist ein Palindrom");
	 		}
	 		
	 		} else {
	 			
			if (palindrom.charAt(0) != palindrom.charAt(3)) {
				 System.out.println ("Es ist kein Palindrom");
			} else {
				
			if (palindrom.charAt(0) == palindrom.charAt(3) & palindrom.charAt(1) != palindrom.charAt(2)) {
				System.out.println ("Es ist kein Palindrom");
			}
		  }
		}
	}
}

Eine Frage hätte ich jetzt noch, hier ist mein Code ja genau auf 4 Buchstaben bezogen, kann man es auch verallgemeinern das es für eine beliebige Zahl geht, oder wäre das zu kompliziert?

MFG

Hm, also deine If - else Struktur ist ja nicht sehr sinnvoll!
Java:
if (palindrom.charAt(0) == palindrom.charAt(3)) {
[snip]
      if (palindrom.charAt(0) != palindrom.charAt(3)) {
[snip]
}
Der zweite Vergleich wird ganz sicher nie zutreffen ....

ausserdem sieht es eleganter aus wenn man
Java:
if (test1) {
  doThat();
} else if (test2) {
  doThis();
} else if (test3() {
  blabla();
} else {
 sonstwas();
}
 
Zuletzt bearbeitet:

Landei

Top Contributor
Übrigens ist die rekursive Lösung recht hübsch:

Java:
    public static boolean isPalindrom(String s) {
            int last = s.length() - 1;
            return s.length() < 2  || (s.charAt(0) == s.charAt(last) 
                     && isPalindrom(s.substring(1, last)));
    }
 

Andi_CH

Top Contributor
Java:
public class palindrom {

	final static String[] worte = {"ABC", "ABA", "ABBA"};
	
	private static void checkPalindrom(String pWort){
		int j = pWort.length();
		for (int i=0; i<j; i++) {
			--j;
			if (pWort.charAt(i) != pWort.charAt(j)) {
				System.out.println(pWort  + " ist kein Palindrom" );
				return;
			}
		}
		System.out.println(pWort + " ist ein Palindrom");
	}

	public static void main(String[] args) {
		for (int i=0; i<worte.length; i++) {
			checkPalindrom(worte[i]);
		}
	}
}
 

Landei

Top Contributor
Man kann übrigens auch schreiben:

Java:
 for (int i=0, j=pWort.length(); i<j; i++, j--) {...

Ob das wirklich hübscher ist, ist eine andere Frage...
 

Andi_CH

Top Contributor
oder man spart sich j gleich ganz ->

pWord.length - i - 1 müsste auch gehen, aber ob das eleganter ..... :D

Es gab doch mal einen Wettberwerb - wer schreibt die unleserlichste C-Code-Zeile

Im sinne von Ausbildung ;-) Es gibt noch eine andere, sehr elegante Variante für einen Loop
Java:
for(String s : worte){
    checkPalindrom(s);
}
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Best Practice Palindrom in einem Text finden Java Basics - Anfänger-Themen 18
K Mehrere Werte in einem Switch Case parallel überprüfen Java Basics - Anfänger-Themen 4
Zrebna Fragen zu einem Klassendiagramm Java Basics - Anfänger-Themen 8
S HashMap mehrere Keys zu einem Value Java Basics - Anfänger-Themen 3
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
F 2x 16bit Werte zu einem 32bit und dann splitten mit 0xb Java Basics - Anfänger-Themen 1
J JSON mit einem JPanel Java Basics - Anfänger-Themen 3
F Einem GIT repository ein Projekt hinzufügen Java Basics - Anfänger-Themen 1
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
P Probleme mit NetBeans: Wie lässt sich jar. Datei an einem MacBook öffnen Java Basics - Anfänger-Themen 21
J Auf einem JLabel Linien Malen Java Basics - Anfänger-Themen 1
I @Entity Klassen, Service Beans etc. aus einem Share Projekt beziehen? Java Basics - Anfänger-Themen 26
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
XWing Randomizer mit einem String Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
N Welche Objekte kann man zu einem Set hinzufügen Java Basics - Anfänger-Themen 4
Kumora ArrayIndexOutOfBoundsException bei einem Sortierverfahren Java Basics - Anfänger-Themen 2
I Viereck / Rechteck Prüfung innerhalb einem bestimmten Bereich Java Basics - Anfänger-Themen 2
Distanz zwischen zwei Zeichenfolgen in einem String bestimmen Java Basics - Anfänger-Themen 5
Substring in einem String finden Java Basics - Anfänger-Themen 13
J Fehlerbehandlung an einem Beispiel Java Basics - Anfänger-Themen 8
I ResultSet aus meiner SQL-Abfrage in einem JTextfield ausgeben. Java Basics - Anfänger-Themen 1
I Innerhalb einem Bild ein Teil austauschen Java Basics - Anfänger-Themen 26
I Dateigröße von einem InputStream oder byte[] bekommen Java Basics - Anfänger-Themen 2
H Compiler-Fehler Klasse in einem Package wird nicht gefunden bzw. akzeptiert Java Basics - Anfänger-Themen 12
S Algorithmus entwicklen, der zu einem gegebenen Datum die Jahreszeit ermittelt Java Basics - Anfänger-Themen 13
B In einem Thread Endlosschleife beenden Java Basics - Anfänger-Themen 19
A Elemente in einem Array Java Basics - Anfänger-Themen 5
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15
S Eine Variable in einem Array speichern Java Basics - Anfänger-Themen 5
T Methode, die prüft ob in einem Int-Array maximal 2 Zahlen enthalten sind, die größer als ihr Vorgänger sind Java Basics - Anfänger-Themen 5
berserkerdq2 Wie gebe ich den Pfad zu einer Datei an, die in einem Ordner in Eclipse ist? Java Basics - Anfänger-Themen 1
M Objekt in einem Objekt speichern Java Basics - Anfänger-Themen 9
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
L Gridmuster in einem Array Java Basics - Anfänger-Themen 2
D spezifische Knoten in einem Baum zählen Java Basics - Anfänger-Themen 9
X Erste Schritte Hilfe bei einem kleinen Spiel. Java Basics - Anfänger-Themen 19
O Array mit einem Zeichen vergleichen Java Basics - Anfänger-Themen 1
B Brauche Hilfe zu einem Code Java Basics - Anfänger-Themen 5
J Zahlen bis zu einem bestimmten Grenzwert ausgeben Java Basics - Anfänger-Themen 11
P9cman Vokale in einem String überprüfen mittels Rekursion Java Basics - Anfänger-Themen 8
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
Igig1 Wie lasse ich dir Werte in einem Array zusammenrücken? Java Basics - Anfänger-Themen 4
W Methode, die mit einem Datum arbeitet? Java Basics - Anfänger-Themen 22
Igig1 Welche Werte sind als default Werte in einem Array, der als Datentyp eine Klasse hat? Java Basics - Anfänger-Themen 1
Kiki01 Wie würde eine geeignete Schleife aussehen, die die relative Häufigkeit für jeden Charakter in einem Text bestimmt? Java Basics - Anfänger-Themen 3
C Hilfe bei einem Anfängerprojekt Java Basics - Anfänger-Themen 25
U Char zu einem String machen Java Basics - Anfänger-Themen 1
U Kann man bei Java gleich mehrere Bedingungen prüfen in der If, aber in einem "Satz"? Java Basics - Anfänger-Themen 1
Schniffi Nur bestimmte Bilder aus einem Array auf Image Button anzeigen lassen Java Basics - Anfänger-Themen 3
S Längster Pfad zwischen zwei Vertices in einem Graph Java Basics - Anfänger-Themen 3
I Upload File zu einem Webservice Java Basics - Anfänger-Themen 17
Naxon89 Input/Output Ein PDF in einem BLOB umwandeln um ihn dann als PDF wieder anzuzeigen Java Basics - Anfänger-Themen 3
Kotelettklopfer Mehrere Projekte in einem Git verwalten Java Basics - Anfänger-Themen 10
B in einem Array den nächstgelegenen Wert zu einem eingabewert finden Java Basics - Anfänger-Themen 8
E JPanels auf gleicher Höhe (Y-Achse) in einem FlowLayout platzieren Java Basics - Anfänger-Themen 7
N Aus einem String die Anzahl der Vokale auslesen Java Basics - Anfänger-Themen 40
C Programm das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht, richtig geschrieben? Java Basics - Anfänger-Themen 11
M Von einem Menü Methode aus anderer Klasse ausführen, die errechnete Werte in Datei schreibt. Java Basics - Anfänger-Themen 8
A Zu einem bestimmten Ort im Code springen Java Basics - Anfänger-Themen 11
I Validation, ob String ein Wert aus einem Enum enthält Java Basics - Anfänger-Themen 3
B Häufigkeit einzelner Zahlen in einem Array Java Basics - Anfänger-Themen 6
D Zufällige Auswahl aus einem angelegten Array? Java Basics - Anfänger-Themen 10
A Löschen von Leerzeichen in einem char array ohne methoden Java Basics - Anfänger-Themen 6
T Methode schreiben, die einem Array ein Stringelement hinzufügt, wenn dieses noch nicht enthalten ist. Java Basics - Anfänger-Themen 6
TimoN11 IntelliJ , Ausgabe von einem Quellcode in Eingabe eines Quellcodes Java Basics - Anfänger-Themen 1
R Mehrere Buchstaben aus einem String entfernen Java Basics - Anfänger-Themen 1
J Alle .java Dateien von einem Verzeichnis in eine Zip speichern Java Basics - Anfänger-Themen 2
J Alle Dateien aus einem Verzeichnis laden Java Basics - Anfänger-Themen 10
H Minimum in einem Array bestimmen Java Basics - Anfänger-Themen 7
J Input/Output Konstruktor ergänzen, der zur Datei mit einem Objekt passt Java Basics - Anfänger-Themen 0
P Auswahl bei einem Videoverleih limitieren Java Basics - Anfänger-Themen 4
B Quicksort in Verbindung mit einem Projekt Java Basics - Anfänger-Themen 1
P Ein Objekt nach einem String durchsuchen? Java Basics - Anfänger-Themen 7
dieter000 Frage zu einem Beispiel... Java Basics - Anfänger-Themen 5
O Java Weinachtsbaum in einem Bilderramen Java Basics - Anfänger-Themen 5
C Größte Zahl aus einem Array ermitteln(als statische Methode) Java Basics - Anfänger-Themen 31
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
Y Knoten an einem gegebenen Index aus einer Liste entfernen. Java Basics - Anfänger-Themen 6
G Methoden Methode die aus einem Array ein Index ausgibt? Java Basics - Anfänger-Themen 2
J Verschieben von Buchstaben in einem String um vorgegebene Anzahl von Zeichen innerhalb eines weiteren String Java Basics - Anfänger-Themen 12
Kingamadeus2000 Anzahl der Ziffern der kürzesten Zahl aus einem zurückliefern Java Basics - Anfänger-Themen 1
U Muster in einem Array erkennen Java Basics - Anfänger-Themen 8
Y Wie greift man auf die Knoten in einem Binärbaum zu? Java Basics - Anfänger-Themen 5
rafi072001 Lesen aus einem Excel File Java Basics - Anfänger-Themen 10
Y Wie kann man überprüfen, ob bei einem Print Befehl tatsächlich etwas geprintet wurde? Java Basics - Anfänger-Themen 4
J Lösungen zu einem Lückentext finden Java Basics - Anfänger-Themen 0
Z Char Array an zufälligen stellen mit einem "x" füllen. Java Basics - Anfänger-Themen 4
L Alle Ziele in einem Raster abknallen Java Basics - Anfänger-Themen 17
T Auf einem Schachbrett bewegen programmieren Java Basics - Anfänger-Themen 2
F JMenuItem Kann nicht nach einem String benannt werden... Java Basics - Anfänger-Themen 11
H 3 Comparatoren zu einem zusammenfassen - Chaining... Java Basics - Anfänger-Themen 15
N LocalTime einem Objekt zuweisen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben