Übersetzung Morsealphabet zu String
Crypto
- java
0 derletztekick0 Crypto0 derletztekick0 Crypto2 derletztekick0 Crypto
0 Daniel Thoma
Hallo, ich fange gerade an mit Java und habe Hausaufgaben die ich alleine noch nicht lösen kann.
Es soll ein Programm geschrieben werden wo nachher eine Texeingabe im Morsealphabet eingegeben wird, und als normaler Text wiedergegeben wird!?
Wie stelle ich das an? Danke Crypto
Hallo Crypto,
Es soll ein Programm geschrieben werden wo nachher eine Texeingabe im Morsealphabet eingegeben wird, und als normaler Text wiedergegeben wird!?
Wie stelle ich das an? Danke Crypto
Wenn die einzelnen Buchstaben des Morsealphabets duch ein Leerzeichen getrennt sind, kannst Du mit split ein Array erzeugen, in dem jede Zelle den Code eines Buchstaben enthält. Mit der Methode equals kannst Du diese Zeichenketten mit jedem Morsecode vergleichen. Dazu könnte eine lange if-else if-else Anweisung dienen.
Möglich und wohl auch deutlich eleganter wäre eine Hash-Tabelle.
Mit freundlichem Gruß
Micha
Hallo Micha,
vielen Dank, erstmal. Werde mal sehn was ich draus basteln kann.
Gibt es irgendwo Seiten, wo man sich Beispiel - Programme anschauen kann?
Danke Crypto
Hallo Crypto,
Gibt es irgendwo Seiten, wo man sich Beispiel - Programme anschauen kann?
Sicher, diese zum Beispiel wenn Du die Lösung mittels Hash-Tabelle nutzen möchtest.
Mit freundlichem Gruß
Micha
Hallo Micha,
ich meinte eher Seiten mit Programmen, wo man sich anschauen kann wie es aussehen muss.
Bin wohl die einzigste in meiner Klasse die noch nie Programmiert hat, die anderen tun sich da nicht so schwer! Möchte es aber auf jeden Fall lernen.
Danke Crypto
Hallo Crypto,
wo man sich anschauen kann wie es aussehen muss.
Daniel hat Dir ja bereits den besseren Lösungsweg aufgezeigt und auch die drei nötigen Schritte genannt. Wenn man sich daran hält, sollte sowas in der Art entstehen:
- java.util.Scanner verwenden um die Eingabe in einzelne Morse-Zeichen zu zerlegen und zeichenweise abzuarbeiten.
Wie Du hier nachlesen kannst, zerlegst Du den entgegengenommenen String "eingegebenerText":
StringTokenizer tokenizer = new StringTokenizer( eingegebenerText );
while ( tokenizer.hasMoreTokens() )
System.out.println( tokenizer.nextToken() );
Trennzeichen sind - wie dem Hinweiskasten zu entnehmen ist - "Leerzeichen, Tabulator, Zeilenende und Seitenvorschub" wenn nichts angegeben ist. Als Ergebnis liefert Dir die while-Schleife jedes einzelne Morsezeichen und gibt es wieder aus.
- In einer java.util.HashMap die Zuordung von Morse zu normalen Zeichen speichern.
Den Link hatte ich Dir ja schon genannt, wo Du erklärt bekommst, wie Du eine solche Tabelle erstellst, sie mit Daten füllst und auch wieder abrufen kannst.
HashMap<String,String> Morsecode = new HashMap<String,String>();
Morsecode.put(".-", "a");
Morsecode.put("-...", "b");
Morsecode.put("-.-.", "c");
Morsecode.put("-..", "d");
Morsecode.put(".", "e");
...
- Zeichen übersetzen und den neuen String mittels java.lang.StringBuilder zusammenbauen oder direkt in einen Writer ausgeben.
Die beiden oben gemachten Teilschritte vereinst Du nun. Dazu nimmst Du die while-Schleife, in der Du jedes einzelne "Zeichen" ermittelst und die Codetabelle. Mit der Methode get() der HashMap suchst Du nun die Zeichen:
Morsecode.get( tokenizer.nextToken() )
und gibst es wieder innerhalb der Schleife wieder aus:
while ( tokenizer.hasMoreTokens() )
System.out.println( Morsecode.get( tokenizer.nextToken() ) );
Im Ergebnis erhälst Du nun die "Übersetzung" des Codes.
Mit freundlichem Gruß
Micha
Hallo Micha,
Wau!
Das ist mal ne Erklärung.
Jetzt müsste es klappen, werde ich in der Pause probieren.
Vielen Dank Gruß Crypto
Hallo Crypto,
Die elegantere Lösung als mit split und else-if-Ungetümen zu arbeiten wäre:
Der Kernalgorithmus ohne die Erzeugung der Map lässt sich in 3 - 4 Zeilen programmieren.
Grüße
Daniel