Schleifen

Wirtschaftsinformatiker

Bekanntes Mitglied
Gibt es ein einfacher Weg für die Aufgabe?

Schreibe eine weitere Methode boolean istPalindrom(String text), die nur für Palindrome wie anna, otto, regallager oder axa true liefert. Vergleiche dazu die passenden Zeichen innerhalb des Strings. Verwende die Methode toLowerCase() aus der Klasse String, um den Unterschied zwischen Groß- und Kleinschreibung zu ignorieren, damit auch Anna, Otto und Regallager als Palindrome erkannt werden.

[CODE lang="java" title="Lösung"]public boolean istPalindrom(String text)
{
boolean istPalindrom = false;
String neuerText = text.toLowerCase();
int mitte = neuerText.length()/2;
if(neuerText.length()%2 != 0)
{
String ersteHaelfte = neuerText.substring(0,mitte);
String zweiteHaelfte = neuerText.substring(mitte + 1,neuerText.length());
for(int i = 0; i<neuerText.length(); i++)
{
if(ersteHaelfte.charAt(i) != zweiteHaelfte.charAt(zweiteHaelfte.length()-(i+1)))
{
return istPalindrom;
}
}
}
else
{
for(int i = 0; i<neuerText.length(); i++)
{
if(neuerText.charAt(i) != neuerText.charAt(neuerText.length()-i-1))
{
return istPalindrom;
}[/CODE]
 

temi

Top Contributor
Ja. Du brauchst eine Schleife in der du den ersten und den letzten Buchstaben des Wortes vergleichst, dann den zweiten und den vorletzten, usw.

Wenn sie nicht übereinstimmen ist es kein Palindrom. Die Schleife muss nur bis zur Mitte des Wortes laufen.
 

temi

Top Contributor
Kannst du bitte es hier schreiben, ich hab nicht verstanden, wie ich das mache?
Ich könnte das, werde es aber nicht tun, weil du davon nichts hast. Versuch das Problem erst mal selbst zu lösen.

Was verstehst du an der Beschreibung nicht? Wo fehlt dir der Ansatz?

EDIT:

Vielleicht ein paar Anregungen zum Nachdenken:

Welchen Index hat der erste Buchstabe des Wortes?

Welchen Index hat der letzte Buchstabe des Wortes?

Wie könntest du aus dem aktuellen Index (der beim ersten Buchstaben beginnt) den Index des letzten Buchstaben berechnen?
 
Zuletzt bearbeitet:
K

kneitzel

Gast
Kannst du bitte es hier schreiben, ich hab nicht verstanden, wie ich das mache?
Schau Dir doch einfach einmal Deinen Code an - speziell diesen Part:
Java:
            istPalindrom = false;
            // ...
            for(int i = 0; i<neuerText.length(); i++)
            {
                if(neuerText.charAt(i) != neuerText.charAt(neuerText.length()-i-1))
                {
                    return istPalindrom;
                }

Dein Code war da etwas abgeschnitten, aber was genau macht dieser Code?

Und dann vergleiche dies einfach einmal mit dem Vorschlag, den @temi genannt hat.

Und dann nur noch ein Hinweis zu einem anderen Teil des Codes (auch wenn der dann vermutlich gelöscht wird:
Java:
 String ersteHaelfte = neuerText.substring(0,mitte);
            String zweiteHaelfte = neuerText.substring(mitte + 1,neuerText.length());
            for(int i = 0; i<neuerText.length(); i++)
            {
                if(ersteHaelfte.charAt(i) != zweiteHaelfte.charAt(zweiteHaelfte.length()-(i+1)))
                {
                    return istPalindrom;
                }
            }

Du hast zwei Strings ersteHaelfte / zweiteHaelfte. Diese sind natürlich kürzer wie der String in neuerText.
Nun gehst Du aber mit i durch alle Stellen von neuerText. Das wird dann natürlich zu Problemen führen, sobald Du zu einer Stelle kommst, die es nicht mehr gibt, denn die Dokumentation von charAt gibt an:
IndexOutOfBoundsException - if the index argument is negative or not less than the length of this string.
 

Wirtschaftsinformatiker

Bekanntes Mitglied
[CODE lang="java" title="Schleifen"]if (text != null text.length>0){
text=text. toLowerCase();
for(int i=0; i<=length(); ++i){
if(tect.charAt(i) == text.charAt(length()-1)){
istPalindrom = true;
}
else if(tect.charAt(i) != text.charAt(length()-1)){
istPalindrom = false;
break;
}
}
}
return istPalindrom
}[/CODE]
 
Zuletzt bearbeitet:
K

kneitzel

Gast
if(tect.charAt(i) != text.charAt(length()-1))
a) Tippfehler
b) prüfe doch den zweiten charAt Parameter
 

Wirtschaftsinformatiker

Bekanntes Mitglied
[CODE lang="java" title="Schleifen"]if (text != null && text.length()>0){
text=text. toLowerCase();
for(int i=0; i<=length(); ++i){
if(tect.charAt(i) == text.charAt(length()-1)){
istPalindrom = true;
}
else if(tect.charAt(i) != text.charAt(length()-1)){
istPalindrom = false;
break;
}
}
}
return istPalindrom
}[/CODE]
 
K

kneitzel

Gast
Und noch einmal der wichtige Hinweis zum if Befehl:
Java:
if (a) {
    // Hier ist a == true!
} else {
    // hier ist a == false!
}

Wenn Du also a abgeprüft hast, dann musst Du im else nicht mehr !a prüfen. Wenn die Zeichen gleich sind, dann geht er in das if und ansonsten geht er in das else. Eine Prüfung, ob die Zeichen ungleich sind, ist also schlicht nicht notwendig!
 

temi

Top Contributor
Einen else-Zweig brauchst du gar nicht.
Prüfe einfach ob die beiden Buchstaben nicht übereinstimmen, dann ist es kein Palindrom. In dieser Art:
Java:
boolean istPalindrom = true;
for (...) {
    wenn Buchstaben nicht übereinstimmen, dann istPalindrom = false;
}
return istPalindrom; // wenn es in der Schleife nicht false gesetzt wurde, dann ist es ein Palindrom

oder mit frühzeitigem Abbruch:
Java:
for (...) {
    wenn Buchstaben nicht übereinstimmen, dann return false;
}
return true;
 

mihe7

Top Contributor
Kannst du bitte es schreiben?
Kein Problem:
Java:
public boolean istPalindrom(String text) {
    return new org.javaforum.PalindromeChecker(false).isPalindrome();
}
Der Parameter im Konstruktor gibt an, ob der PalindromeChecker Groß-/Kleinschreibung berücksichtigen soll (true) oder nicht (false).
 

temi

Top Contributor
Kein Problem:
Java:
public boolean istPalindrom(String text) {
    return new org.javaforum.PalindromeChecker(false).isPalindrome();
}
Der Parameter im Konstruktor gibt an, ob der PalindromeChecker Groß-/Kleinschreibung berücksichtigen soll (true) oder nicht (false).
Fehlt da nicht die Übergabe des text-Parameters an den PalindromeChecker?
 
K

kneitzel

Gast
Fehlt da nicht die Übergabe des text-Parameters an den PalindromeChecker?
Hast Du die OutOfCoffeeException nicht gesehen? Also ich habe die hier ganz deutlich wahrnehmen können.

Da war ein Stracktrace mit org.javaforum.mihe7.ArticleWriter.writeResponse - die Zeilennummer habe ich mir aber nicht gemerkt .... schau mal in die Logs hier vom Thread - da findest Du die.
 

Wirtschaftsinformatiker

Bekanntes Mitglied
[CODE lang="java" title="Schleifen"]public boolean istPalindrom(String text)
{
if (text != null && text.length()>0){
text=text.toLowerCase();
boolean istPalindrom = true;
for (int i=0; i<=text.length(); ++i) {
if(text.charAt(i) != text.charAt(text.length()){
istPalindrom = false;
}
return istPalindrom;
}
}[/CODE]
 

temi

Top Contributor
Was passiert, wenn ein leerer String übergeben wurde?

Außerdem vergleichst du immer mit dem letzten Buchstaben (EDIT: bzw. nicht mal das). Das ist falsch.

Probier deine Codes bitte unbedingt mal aus!
 
K

kneitzel

Gast
Hast Du den Code getestet?

Hast Du auch Fälle wie "abca" getestet?

Aber schau dir die Schleife einmal an - in der Schleife ohne Bedingung ein return sieht immer schlecht aus:
- Entweder Du brauchst eine Schleife - dann willst Du nicht sofort rausspringen.
- Oder du brauchst keine Schleife.
 
K

kneitzel

Gast
Ja, dann schau Dir die Syntaxfehler an und behebe diese. Wenn Du damit Probleme hast, dann gib uns den genauen Code zusammen mit der genauen Fehlermeldung.

Aber das ist alles immer noch sehr dubios: text.charAt(text.length()) Das wirst Du nicht einmal gestartet haben ...
 
K

kneitzel

Gast
Wichtig ist, dass Du versuchst, Probleme zu verstehen. Ich habe das Gefühl, dass du wild ausprobierst und Dir im Augenblick der Überblick fehlt. Das ist sehr schade, denn dadurch fehlt uns jeder Ansatz, die zu helfen. Und dann kommen teilweise Aussagen, die Dich evtl. noch eher weiter demotivieren und Dir nicht helfen.

Das ist schade - zumal Du ja schon Code-Teile hattest, die deutlich besser waren, z.B. das:
if(neuerText.charAt(i) != neuerText.charAt(neuerText.length()-i-1))
 

temi

Top Contributor
Geh einfach noch mal ein paar Schritte zurück.
Welchen Index hat der erste Buchstabe des Wortes?

Welchen Index hat der letzte Buchstabe des Wortes?

Wie könntest du aus dem aktuellen Index (der beim ersten Buchstaben beginnt) den Index des letzten Buchstaben berechnen?
Java:
String word = "Hannah";

char ersterBuchstabe = word.charAt(0); // Zählung beginnt bei 0
char letzterBuchstabe = word.charAt(word.length() - 1); // weil die Zählung bei 0 beginnt muss 1 abgezogen werden

char nächsterBuchstabe = word.charAt(1);
char vorherigerBuchstabe = word.charAt(word.length() - 2);

Du willst aber nicht immer nur den ersten und den letzten Buchstaben vergleichen, sondern immer den nächsten, bzw. vorherigen Buchstaben. Dazu hast du die Schleife mit der Indexvariablen i, die mit 0 beginnt.

Also schreiben wir das mal abhängig von i:
Java:
int i = 0;

char ersterBuchstabe = word.charAt(i); // Index 0 => 'H'
char letzterBuchstabe = word.charAt(word.length() - 1 - i); // Index 6 - 1 - 0 = 5 => 'h'

i = 1;

char nächsterBuchstabe = word.charAt(i); // Index 1 => 'a'
char vorherigerBuchstabe = word.charAt(word.length() - 1 - i); // Index 6 - 1 - 1 = 4 => 'a'

// usw.

Du musst also den Buchstaben charAt(i) mit dem Buchstaben charAt(length() - 1 - i) vergleichen.

Das kombinierst du jetzt mit diesem:
Java:
boolean istPalindrom = true;
for (...) {
    wenn Buchstaben nicht übereinstimmen, dann istPalindrom = false;
}
return istPalindrom; // wenn es in der Schleife nicht false gesetzt wurde, dann ist es ein Palindrom

Verzichte dabei erst mal auf die Kontrolle auf null oder leerem String. Das kannst du danach noch einfügen.

Ich hoffe das hilft, ansonsten sag uns bitte, wo du Verständnisprobleme hast. Dann können wir darauf konkret eingehen.
 
Zuletzt bearbeitet:

mihe7

Top Contributor
kann jemand mir sagen, wie wird Code am Ende aussehen, weil ich echt kein Bock auf diese Aufgabe habe.
Jetzt mal ernsthaft: mit der Einstellung kommst Du nicht weiter. Die Aufgabe ist was zum Warmwerden mit der Sprache, von der Schwierigkeit her in etwa das "Hello World" der Schleifen. Wenn Du da schon die Flinte ins Korn wirfst, kannst Du Dich auch gleich abmelden (EDIT: vom Studium, natürlich).

Das Einzige, was evtl. etwas ungewohnt ist, ist der Umgang mit Indizes, die bei 0 beginnen - wobei das eigentlich nichts Ungewöhnliches ist: wir haben 10 Ziffern, die von 0 bis 9 gehen. So ist es hier halt auch: bei einem Text der Länge n gehen die Indizes der Zeichen eben von 0 bis n-1.

Der Rest ist doch einfach nur der Vegleich, ob das Zeichen an Position i mit dem Zeichen an Position n-1-i (n-1, weil Indizes...) übereinstimmt. Ist ein Zeichen dabei, wo das nicht der Fall ist -> kein Palindrom, sonst Palindrom. Überlegen kann man sich noch, wie weit das i maximal gehen muss.

Jetzt den Spaß noch etwas präziser als Algorithmus formulieren und in Java kodieren. Fertig.
 
K

kneitzel

Gast
kann jemand mir sagen, wie wird Code am Ende aussehen, weil ich echt kein Bock auf diese Aufgabe habe.
So sehr ich das auch verstehen kann - Zum Studium gehört es nun einmal auch, sowas zu lernen. Und im Rahmen Deines Studiums der Wirtschaftsinformatik wirst Du bestimmt noch deutlich mehr machen, auf das Du evtl. kein Bock hast und - noch wichtiger - das auf dem hier aufbaut. Das sind keine Dinge, die Du später nie mehr brauchst. Hier geht es um absolute Grundlagen.

Und ich bin kein Studienberater, aber wenn Du auf Informatik (Oder einen der Kernbereiche der Informatik) kein Bock hast, dann solltest Du evtl. ein Studienfach wählen, das eben kein "Informatik" im Namen hat.

Also nur noch einmal: Hier geht es um absolute Basics. Eine einfache Schleife die Zeichen an bestimmten Positionen eines Strings vergleicht. Später werden noch ganz andere Dinge kommen. Du wirst bestimmt auch mit sowas wie Graphen konfrontiert. Und selbst bei Themen, in denen es nicht in erster Linie um Entwicklung geht, muss man verstehen, wie etwas abläuft. Datenbanken, Betriebssysteme, Rechnernetze, .... Da hilft es, ein Verständnis zu haben, wie ein Rechner intern tickt und wie es da abläuft. Und bei der Entwicklung hast Du (auf einem hohen Niveau) da einen guten Einblick.
 

M.L.

Top Contributor
Zusätzlich könnten Fragen zum Thema Datenstrukturen und deren geeigneter Bearbeitung oder Manipulation z.B. später in Bewerbungsgesprächen auftauchen (Eigenrecherche: java interview questions data structures). Dagegen ist das Thema "Palindrom" eher banal...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T schleifen Java Basics - Anfänger-Themen 3
Kingdako Wie löse ich eine Mathematische Formel mit Arrays und Schleifen? Java Basics - Anfänger-Themen 32
S Erste Schritte While Schleifen Java Basics - Anfänger-Themen 11
M geschachtelte for-Schleifen - Einmaleins ausgeben Java Basics - Anfänger-Themen 3
Mikejr Schleifen Java Basics - Anfänger-Themen 4
java-starter Erste Schritte Mit While Schleifen Programme schreiben Java Basics - Anfänger-Themen 4
K geschachtelte "for-Schleifen" Java Basics - Anfänger-Themen 3
Alen123 Potenzen in Schleifen Java Basics - Anfänger-Themen 26
Alen123 String wiederholen mit Schleifen Java Basics - Anfänger-Themen 1
A Schleifen und Boolsche Ausdrücke Java Basics - Anfänger-Themen 42
S Interaktive Abfrage, Hilfe mit Schleifen! Java Basics - Anfänger-Themen 6
Mojtaba1986 Hausaufgabe (Schleifen) Java Basics - Anfänger-Themen 33
A Schleifen Verzweigungen Java Basics - Anfänger-Themen 18
C Sind die while-Schleifen richtig in for-Schleifen ersetzt worden? Java Basics - Anfänger-Themen 8
D Schleifen Problem Java Basics - Anfänger-Themen 2
H Muster mit verschachtelten Schleifen kreieren. Java Basics - Anfänger-Themen 2
A Schleifen in Java Java Basics - Anfänger-Themen 4
A Schleifen, Hilfe! Java Basics - Anfänger-Themen 6
C Schleifen Durchlauf Java Basics - Anfänger-Themen 7
M While-Schleifen-Fehler Java Basics - Anfänger-Themen 4
J Schleifen Wiederholendes Zeichenmuster Java Basics - Anfänger-Themen 4
K For-Schleifen Ablauf Java Basics - Anfänger-Themen 5
L Anzahl der Aufrufe von Schleifen bestimmen Java Basics - Anfänger-Themen 1
S Hilfe bei Java Aufgabe (Schleifen) Java Basics - Anfänger-Themen 25
B Verschachtelte For Schleifen Java Basics - Anfänger-Themen 8
G Input/Output Schleifen Durchlauf Java Basics - Anfänger-Themen 5
A Erste Schritte Schleifen Java Basics - Anfänger-Themen 5
J Muster und Schleifen Java Basics - Anfänger-Themen 33
H ERGÄNZUNGSFRAGE: Klammersetzung bei if-else Anweisungen und Schleifen Java Basics - Anfänger-Themen 2
scratchy1 Argumente mit verschiedenen Schleifen ausgeben Java Basics - Anfänger-Themen 3
C Schleifen Java Basics - Anfänger-Themen 12
E geschachtelte for-schleifen Java Basics - Anfänger-Themen 6
L Übungsaufgabe zu Schleifen Java Basics - Anfänger-Themen 7
W Erste Schritte Rechnen mit Schleifen? Denkanstoß gesucht Java Basics - Anfänger-Themen 15
A Erste Schritte for-Schleifen vereinfachen Java Basics - Anfänger-Themen 5
S Immer das selbe mit den Schleifen Java Basics - Anfänger-Themen 24
kokojamboo92 Schleifen und Arrays Java Basics - Anfänger-Themen 7
N Problem mit Schleifen Java Basics - Anfänger-Themen 20
O Array, geschachtelte For-Schleifen Java Basics - Anfänger-Themen 34
S While-Schleifen Ausgabe als String? Java Basics - Anfänger-Themen 1
R Threads Pause zwischen zwei Schleifen Java Basics - Anfänger-Themen 1
D verschachtelte Schleifen Java Basics - Anfänger-Themen 6
H Schleifen (anfänger) Java Basics - Anfänger-Themen 13
C Variablen in Schleifen außerhalb verwenden Java Basics - Anfänger-Themen 2
L Schachbrettnummerierung mit Schleifen.. Java Basics - Anfänger-Themen 3
H Schleifen Java Basics - Anfänger-Themen 8
L Zahlentripel und for-Schleifen Java Basics - Anfänger-Themen 2
T Spezielle Aufgabe zu Schleifen Java Basics - Anfänger-Themen 3
T Erste Schritte Schleifen-Stop Java Basics - Anfänger-Themen 14
kilopack15 Rekursion und Schleifen Java Basics - Anfänger-Themen 27
I Mehre While-Schleifen hintereinander Java Basics - Anfänger-Themen 13
P Terminieren diese Schleifen Java Basics - Anfänger-Themen 6
L Was heißt terminieren bei Schleifen? Java Basics - Anfänger-Themen 3
I Brauche Hilfe bei Schleifen Java Basics - Anfänger-Themen 18
C Erste Schritte While-Schleifen-Problem Java Basics - Anfänger-Themen 3
W Schleifen bei Greenfoot Java Basics - Anfänger-Themen 4
B Operatoren Stopp von Schleifen Java Basics - Anfänger-Themen 9
K Loop ohne Schleifen Java Basics - Anfänger-Themen 2
V Rechenzeichen bei Termen - Darstellung bei Schleifen Java Basics - Anfänger-Themen 7
E Muster auf der Konsole ausgeben lassen (Schleifen) Java Basics - Anfänger-Themen 7
C Erste Schritte Probleme bei Aufgaben zu Schleifen Java Basics - Anfänger-Themen 11
F OOP Schleifen und Probleme mit Setter und Getter Java Basics - Anfänger-Themen 1
L Blöcke bei verschachtelten Schleifen Java Basics - Anfänger-Themen 3
L Kurze Frage zu verschachtelten Schleifen Java Basics - Anfänger-Themen 3
E Erste Schritte Sternchenpyramide mit For-Schleifen erstellen Java Basics - Anfänger-Themen 9
H Best Practice Wie mit break verschachtelte Schleifen komplett verlassen? Java Basics - Anfänger-Themen 2
arti28 Erste Schritte For-Schleifen und While-Schleifen, String als Muster ausgeben. Java Basics - Anfänger-Themen 3
T [Schleifen] Schleifenproblem Java Basics - Anfänger-Themen 4
F Verschachtelte Schleifen Java Basics - Anfänger-Themen 4
J Hilfe verschachtelte Schleifen Java Basics - Anfänger-Themen 5
O Geschachtelte For-Schleifen Java Basics - Anfänger-Themen 1
D Zeichnen, Schleifen Java Basics - Anfänger-Themen 7
S Zeichnen , Schleifen Java Basics - Anfänger-Themen 4
L Schleifen und Array, nur letzte Eingabe wird ausgegeben Java Basics - Anfänger-Themen 3
Z Frage zu for-Schleifen Java Basics - Anfänger-Themen 5
M Wie kann ich eine Ausgabe vervielfachen? (Schleifen) Java Basics - Anfänger-Themen 4
Z Schleifen Beispiel: Fakultät Java Basics - Anfänger-Themen 26
T Erneute Frage zu Schleifen Java Basics - Anfänger-Themen 4
V Schleifen die nicht voneinander abhängen! (für CAN-BUS) Java Basics - Anfänger-Themen 10
T Anfängerfrage zu Schleifen und Arrays Java Basics - Anfänger-Themen 5
S for-Schleifen Problem Java Basics - Anfänger-Themen 4
W Methoden While Schleifen Ergebnis im String speichern Java Basics - Anfänger-Themen 5
F Erste Schritte Hilfe bei Übung zu String equals() und Schleifen Java Basics - Anfänger-Themen 8
J Anzahl von for-Schleifen in Abhängigkeit von Zahleneingabe erzeugen Java Basics - Anfänger-Themen 1
X Methoden Logik-Problem mit Schleifen. Java Basics - Anfänger-Themen 7
J MouseListener für Schleifen-Objekte Java Basics - Anfänger-Themen 13
W Aufgabe mit Schleifen Java Basics - Anfänger-Themen 8
M Sektkelch mit Schleifen Java Basics - Anfänger-Themen 9
F Methoden JTable + 2 For-Schleifen Java Basics - Anfänger-Themen 4
I Listen, for - Schleifen Java Basics - Anfänger-Themen 8
N Schleifen Problem Java Basics - Anfänger-Themen 3
L Histogram mittels Schleifen und Arrays Java Basics - Anfänger-Themen 9
A Ausgabe von Schleifen nebeneinander? Java Basics - Anfänger-Themen 3
T durchlaufene while-Schleifen zählen Java Basics - Anfänger-Themen 3
L schleifen fehler Java Basics - Anfänger-Themen 12
X Array Ausgabe bei Verwendung von 2 Schleifen erklären Java Basics - Anfänger-Themen 8
K Schleifen und Exceptions Java Basics - Anfänger-Themen 8
J Schachbrett mit Hilfe von while-Schleifen Java Basics - Anfänger-Themen 10
F Nach Beendigung aller Schleifen von vorn anfangen, Java Basics - Anfänger-Themen 5
R Anzahl der ineinander verschachtelten for-Schleifen von Variable abhängig machen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben