Palindrom-Untersuchung in Java
Hallo liebe Administratoren,
Ich bin frischgebackener Azubi für SI und habe jetzt schon ein großes Problem in AWE (Anwendungsentwicklung), da unser Lehrer meiner Meinung nach viel zu schnell den Stoff abhandelt, aber auch leider nicht auf mich eingeht, da ich der einzige von 20+ Schülern bin der keinerlei Vorerfahrung auf diesem Gebiet hat. Bis jetzt hatte ich sechs mal AWE à vier Stunden. In den ersten Stunden besprechen wir meist Struktogramme und Programmablaufpläne. Da man bei diesen mehr logisch denken muss als die Programmiersprache zu kennen, werde ich dort selten vor größere Probleme gestellt.
Nun mein Problem. In der zweiten Doppelstunde programmieren wir in Java mithilfe von Eclipse. Angefangen hat es in...
Stunde 1 mit "Hallo Welt!" und leichten Rechenaufgaben - System.out.print();
Stunde 2 Ausrechnen von Urlaubstagen (nach Alter/Behinderung (und Grad)) - boolean, Scanner
Stunde 3 Schleifen - if, else, else if, for, while, continue, break
Stunde 4 u.
Stunde 5 Arrays
Stunde 6 (nur Struktogramme)
Nun sollen wir als Aufgabe über die Herbstferien ein Programm schreiben, dass es mir erlaubt ein Palindrom in die Konsole zu schreiben. Dieses Palindrom soll dann nur aus Kleinbuchstaben bestehen und anschließend in Bytes umgewandelt werden. Erst die Byte-Zahlen werden verglichen und es wird geprüft, ob es sich um ein Palindrom handelt oder nicht. Anschließend werden die Bytes als Array angelegt und umgekehrt in der Konsole ausgegeben. Ich habe keine Ahnung wie ich aus meinen Byte-Zahlen ein Array anlege und dieses dann umgekehrt ausgeben kann. Kann mir dort jemand Anregungen geben? Ich kann mir natürlich eine X-beliebige Programmierung aus dem Netz holen, aber das ist ja nicht der Sinn der Sache. Einen Teil will ich auch aus eigener Feder selbst "entwickeln".
Gruß Tody
Ich bin frischgebackener Azubi für SI und habe jetzt schon ein großes Problem in AWE (Anwendungsentwicklung), da unser Lehrer meiner Meinung nach viel zu schnell den Stoff abhandelt, aber auch leider nicht auf mich eingeht, da ich der einzige von 20+ Schülern bin der keinerlei Vorerfahrung auf diesem Gebiet hat. Bis jetzt hatte ich sechs mal AWE à vier Stunden. In den ersten Stunden besprechen wir meist Struktogramme und Programmablaufpläne. Da man bei diesen mehr logisch denken muss als die Programmiersprache zu kennen, werde ich dort selten vor größere Probleme gestellt.
Nun mein Problem. In der zweiten Doppelstunde programmieren wir in Java mithilfe von Eclipse. Angefangen hat es in...
Stunde 1 mit "Hallo Welt!" und leichten Rechenaufgaben - System.out.print();
Stunde 2 Ausrechnen von Urlaubstagen (nach Alter/Behinderung (und Grad)) - boolean, Scanner
Stunde 3 Schleifen - if, else, else if, for, while, continue, break
Stunde 4 u.
Stunde 5 Arrays
Stunde 6 (nur Struktogramme)
Nun sollen wir als Aufgabe über die Herbstferien ein Programm schreiben, dass es mir erlaubt ein Palindrom in die Konsole zu schreiben. Dieses Palindrom soll dann nur aus Kleinbuchstaben bestehen und anschließend in Bytes umgewandelt werden. Erst die Byte-Zahlen werden verglichen und es wird geprüft, ob es sich um ein Palindrom handelt oder nicht. Anschließend werden die Bytes als Array angelegt und umgekehrt in der Konsole ausgegeben. Ich habe keine Ahnung wie ich aus meinen Byte-Zahlen ein Array anlege und dieses dann umgekehrt ausgeben kann. Kann mir dort jemand Anregungen geben? Ich kann mir natürlich eine X-beliebige Programmierung aus dem Netz holen, aber das ist ja nicht der Sinn der Sache. Einen Teil will ich auch aus eigener Feder selbst "entwickeln".
Gruß Tody
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 317421
Url: https://administrator.de/contentid/317421
Ausgedruckt am: 15.11.2024 um 13:11 Uhr
10 Kommentare
Neuester Kommentar
Hey,
Aus dem Array ausgeben zu lassen ist eigentlich einfach:
Du nimmst ne for-Schleife und läufst die Länger des Arrays -1 rückwärts durch. Oder mit array.reverse.
Und im Schleifen Körper packst du denn Inhalt von Array entweder in einen String
oder du druckst ihn einzelt in der Konsole aus.
Wobei Methode 1 wesentlich besser ist.
Zum Umwandeln kann ich dir leider nichts sagen.
Mir hat damals geholfen, die Java-Dokus zu lesen. Da stehen meinst Methoden drinnen, die einen helfen.
mfG
Jonas
Aus dem Array ausgeben zu lassen ist eigentlich einfach:
Du nimmst ne for-Schleife und läufst die Länger des Arrays -1 rückwärts durch. Oder mit array.reverse.
Und im Schleifen Körper packst du denn Inhalt von Array entweder in einen String
oder du druckst ihn einzelt in der Konsole aus.
Wobei Methode 1 wesentlich besser ist.
Zum Umwandeln kann ich dir leider nichts sagen.
Mir hat damals geholfen, die Java-Dokus zu lesen. Da stehen meinst Methoden drinnen, die einen helfen.
mfG
Jonas
Ein erster Versuch. Leider kommt der Fehler
Bitte ein Wort eingeben:
ANNA
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at Palindrom.main(Palindrom.java:20)
Kleiner Tipp: Bei welchem Index fangen Arrays an und wo liegt der Unterschied zwischen array.length und dem Arrayindex.
Wenn du noch Fragen hast, kannst du bei mir nochmal melden.
mfG Jonas
PS: Das der Fehler kommt, ist ein großer Vorteil von Java, bei C++ würde er dir einen willkürlichen Wert zurück liefern
Das sieht doch schon ganz gut aus, was du bisher gemacht hast. Bei uns in der Berufsschule (FISI) sind selbst nach mehr als 2 Jahren Ausbildung die meisten noch überfordert, eine solche Anwendung zu schreiben.
Tipps:
1) Programmiererfahrung sammeln und Code immer nachvollziehen
2) Exception-Meldungen beachten und entsprechend handeln. Wenn die Fehlermeldung unverstänlich ist, einfach mal googlen. (Zu Klassikern wie der Index-Out-Of-Bounds-Exception wird man etliche Beiträge finden). Dann verstehen, wo der Fehler war und diesen in Zukunft vermeiden.
3) In deinem Code hast du 2x eine Zuweisung anstelle eines Vergleiches benutzt ("=" ungleich "==").
Viel Erfolg!
Tipps:
1) Programmiererfahrung sammeln und Code immer nachvollziehen
2) Exception-Meldungen beachten und entsprechend handeln. Wenn die Fehlermeldung unverstänlich ist, einfach mal googlen. (Zu Klassikern wie der Index-Out-Of-Bounds-Exception wird man etliche Beiträge finden). Dann verstehen, wo der Fehler war und diesen in Zukunft vermeiden.
3) In deinem Code hast du 2x eine Zuweisung anstelle eines Vergleiches benutzt ("=" ungleich "==").
Viel Erfolg!
Hoffe damit sind deine Fragen geklärt
Noch ein Tipp am Rande. Versuch die Variablen und hier den Scanner ordentlich zu benennen. Ich hab das am Anfang auch nie gemacht, aber je länger der Code wird, desto mehr freust du dich über aussagekräftige Benennungen.
mfG Jonas
PS. Wenn alles okay ist, setzt bitte die Frage mit dem grünen Button auf gelöst
Noch ein Tipp am Rande. Versuch die Variablen und hier den Scanner ordentlich zu benennen. Ich hab das am Anfang auch nie gemacht, aber je länger der Code wird, desto mehr freust du dich über aussagekräftige Benennungen.
mfG Jonas
PS. Wenn alles okay ist, setzt bitte die Frage mit dem grünen Button auf gelöst
if (bytearray[index] == bytearray[indexlength])
indexlength --;
palindrom = true;
1) Macht logisch nicht so viel Sinn. Da du keine geschweiften Klammern { } für den IF-Block benutzt hast, wird die Variable palindrom jeden Durchgang auf true gesetzt. Aber auch wenn es zum IF-Block gehören würde, macht es nicht immer Sinn (Wenn der letzte geprüfte Buchstabe übereinstimmt, alles andere aber nicht, wäre das bei dir trotdem ein Palindrom.
Warum setzt du nicht einfach Palindrom am Anfang auf true. Und prüfst solange, bis eine Abfrage ergeben hat, dass es sich entweder um kein Palindrom handelt (dann palindrom auf = false setzen und mittels break aus der for-schleife springen) oder bis du den ganzen String geprüft hast.
2) Zu deinem While: Du willst dir dort doch das ganze Wort ausgebene lassen?. Mit der Variable indexlength hast du aber oben bereits gearbeitet. Wenn dein Wort ein Palindrom wäre, ist indexlength zu Beginn 0 und du bekommst gar keine Ausgabe. Wenn es kein Palindrom ist, kommt es auf den spezifischen Fall an, welchen Startwert die Variable hat.