Crypto: Übersetzung Morsealphabet zu String

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

  1. 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

    --
    LeagueEditor JavaScript :: simple Ligaverwaltung auf der Basis von JavaScript || JS Tetris :: für zwischendurch
  2. 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

    1. 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

      --
      LeagueEditor JavaScript :: simple Ligaverwaltung auf der Basis von JavaScript || JS Tetris :: für zwischendurch
      1. 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

        1. 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

          --
          LeagueEditor JavaScript :: simple Ligaverwaltung auf der Basis von JavaScript || JS Tetris :: für zwischendurch
          1. Hallo Micha,

            Wau!

            Das ist mal ne Erklärung.
            Jetzt müsste es klappen, werde ich in der Pause probieren.

            Vielen Dank Gruß Crypto

  3. Hallo Crypto,

    Die elegantere Lösung als mit split und else-if-Ungetümen zu arbeiten wäre:

    • java.util.Scanner verwenden um die Eingabe in einzelne Morse-Zeichen zu zerlegen und zeichenweise abzuarbeiten.
    • In einer java.util.HashMap die Zuordung von Morse zu normalen Zeichen speichern.
    • Zeichen übersetzen und den neuen String mittels java.lang.StringBuilder zusammenbauen oder direkt in einen Writer ausgeben.

    Der Kernalgorithmus ohne die Erzeugung der Map lässt sich in 3 - 4 Zeilen programmieren.

    Grüße

    Daniel