Java Palindrom

Diskutiere Java Palindrom im Developer Network Forum im Bereich Hardware & Software Forum; Hallo! Ich muss für die uni eine Methode schreiben die überprüft ob der eingelesene bzw übergebene string ein Palindrom ist. Mein Quelltext...
  • Java Palindrom Beitrag #1
S

schneewind

Mitglied
Dabei seit
15.11.2008
Beiträge
15
Reaktionspunkte
0
Hallo!
Ich muss für die uni eine Methode schreiben die überprüft ob der eingelesene bzw übergebene string ein Palindrom ist.
Mein Quelltext lautet folgendermaßen:

boolean isPalindrome = false;
int i = 0;
int j = str.length();
if (j != 0){
while (i<j){
if(str.charAt(i) == str.charAt(j)){
++i;
--j;
isPalindrome = true;
}
else {
isPalindrome = false;}
}
}
else{
isPalindrome = true;
}
return isPalindrome;



nun wird mir gesagt,dass die methode noch nicht korrekt funktioniert.
kann mir jemand sagen, was ich außer acht gelassen habe ?

vielen Dank!
 
  • Java Palindrom Beitrag #2
cmddegi

cmddegi

Bekanntes Mitglied
Dabei seit
12.07.2001
Beiträge
4.740
Reaktionspunkte
0
Ort
Austria
Wenn ein Zeichen nicht übereinstimmt, dann wird isPalindrome auf false gesetzt, aber die Schleife weiter durchlaufen. Dadurch wird es beim nächsten passenden Pärchen wieder auf true gesetzt. Du musst also in dem Fall die Schleife abbrechen; z.B. indem du isPalindrome mit true initialisierst und die Schleifenbedingung erweiterst, damit sie abbricht, wenn isPalindrome false ist.

Achja, und willkommen hier bei Powerforen! Hab grad gesehen, dass das dein erster Beitrag ist :)
 
Zuletzt bearbeitet:
  • Java Palindrom Beitrag #3
S

schneewind

Mitglied
Dabei seit
15.11.2008
Beiträge
15
Reaktionspunkte
0
danke für die antwort :)
ich hoffe, jetzt ist die methode richtig...wörter aus einem buchstaben sind doch eigentlich auchpalindrome oder?
danke,
schneewind
 
  • Java Palindrom Beitrag #4
cmddegi

cmddegi

Bekanntes Mitglied
Dabei seit
12.07.2001
Beiträge
4.740
Reaktionspunkte
0
Ort
Austria
Ich würde sagen, das ist Definitionssache. Beim Programmieren gehts ja in erster Linie darum, dass das Programm tut, was du willst. ;) Wenn in der Angabe nichts steht, würde ich einfach dazuschreiben, wie du es vorgesehen hast.
 
  • Java Palindrom Beitrag #5
S

schneewind

Mitglied
Dabei seit
15.11.2008
Beiträge
15
Reaktionspunkte
0
mmhh... kann man als abbruchbedingung schreiben (i<j && isPalindrome = true) oder wie sage ich, dass er die schleife abbrechen soll, wenn isPalindrome den Wert false hat ?

lg
schneewind
 
  • Java Palindrom Beitrag #6
cmddegi

cmddegi

Bekanntes Mitglied
Dabei seit
12.07.2001
Beiträge
4.740
Reaktionspunkte
0
Ort
Austria
Jepp, ganz korrekt. Also z.B. while(i<j && isPalindrome). Das == true (zwei Ist-gleich-Zeichen, nicht vergessen!) musst du nicht schreiben, da die Variable selbst ein Boolean-Typ ist; ebenso wie das Ergebnis des Vergleichs mit true.
Wenn man es genau nimmt, hat man bei einer while-Schleife aber keine Abbruch-Bedingung, da die Schleife ja weiter läuft, wenn sie erfüllt ist. ;)
 
  • Java Palindrom Beitrag #7
S

schneewind

Mitglied
Dabei seit
15.11.2008
Beiträge
15
Reaktionspunkte
0
hmmmmmm.... okay...hab jetzt folgenden code :

boolean isPalindrome = true;
int i = 0;
int j = str.length();
if (j > 0){
while (i<j && isPalindrome){
if(str.charAt(i) == str.charAt(j)){
++i;
--j;
isPalindrome = true;
}
else {
isPalindrome = false;}
}
}
else{
isPalindrome = true;
}
return isPalindrome;

bekomme aber folgende Meldung: (ist übrigens eine Onlineaufgabe ;)) :

Erklärung:

Deine Methode arbeitet noch
nicht korrekt. Du hast 0 von 6 Punkten erreicht.

Ergebnisse der Testlaeufe:

Der leere String wird korrekt als Palindrom erkannt.

Fehlermeldungen des Kompilers:

java.lang.StringIndexOutOfBoundsException: String index out of range: 1
at java.lang.String.charAt(String.java:687)
at Wrapper.isPalindrome(Wrapper.java:10)
at Evaluator.main(Evaluator.java:47)
at EvaluatorExecutor.main(EvaluatorExecutor.java:7)



nun frage ich mich , was genau der compiler mir eigentlich sagt?

lg,
schneewind

P: ich hab erst vor 4wochen mit programmieren angefangen ;)
 
  • Java Palindrom Beitrag #8
cmddegi

cmddegi

Bekanntes Mitglied
Dabei seit
12.07.2001
Beiträge
4.740
Reaktionspunkte
0
Ort
Austria
Das bedeutet, dass eine Ausnahme aufgetreten ist. StringIndexOutOfBoundsException bedeutet, dass du auf einen Buchstaben zugreifen wolltest, der nicht vorhanden ist. i oder j liegt also irgendwann nicht im erlaubten Bereich.
Ich kenne Java nicht so genau, aber wenn der String-Index Null-basiert ist, dann hat das letzte Zeichen im String einen Index, der um eins kleiner ist, als die String-Länge. Für z.B. "ab" sollte str.length zwei ergeben, de Buchstaben haben aber die Indizes 0 und 1.
 
  • Java Palindrom Beitrag #9
S

schneewind

Mitglied
Dabei seit
15.11.2008
Beiträge
15
Reaktionspunkte
0
aaaaaaaah!!! danke! genau das war es :)
jetzt funktioniert alles :)
vielen dank für die hilfe!
 
  • Java Palindrom Beitrag #10
R

retn

Bekanntes Mitglied
Dabei seit
04.10.2007
Beiträge
152
Reaktionspunkte
0
studierst du zufällig bwl? ^^
ein break bricht auch schleifen ab, nur als zusatzinfo.
greetz^^
 
  • Java Palindrom Beitrag #11
S

schneewind

Mitglied
Dabei seit
15.11.2008
Beiträge
15
Reaktionspunkte
0
...nein... ich studiere technomathematik (oder an anderen unis auch technische mathematik) :D
was genau meinst du mit break ?
 
  • Java Palindrom Beitrag #12
cmddegi

cmddegi

Bekanntes Mitglied
Dabei seit
12.07.2001
Beiträge
4.740
Reaktionspunkte
0
Ort
Austria
In den meisten Programmiersprachen gibt es die Anweisung break; oder etwas vergleichbares. Die Anweisung verlässt die aktuelle Schleife augenblicklich, ohne die Schleifenbedingung zu prüfen. Dadurch wird der Programmcode oft kürzer und übersichtlicher (sofern nicht mehrere Schleifen verschachtelt sind; dann kann es auch eher undurchsichtiger werden), allerdings sehen die theoretischen Informatiker und Algorithmen-Leute sowas oft nicht so gerne. Ebenso könnte man direkt in der Schleife bei unpassenden Buchstaben mit return false; sofort die Funktion verlassen. Allerdings haben die Theoretiker lieber einen einzigen Punkt, an dem der Algorithmus endet; je nach "Hardcoreness" ;) auch unter Inkaufnahme eines wesentlich komplizierteren Programmcodes. :D
 
Thema:

Java Palindrom

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.179
Beiträge
1.579.172
Mitglieder
55.878
Neuestes Mitglied
Satan666
Oben