/** * Morse_Uebersetzer übersetzt More-Code-Folgen in Wörter * * @author MB * @version NOV 2013 */ public class Morse_Uebersetzer { // instance variables private static int zustand; private static String ausgabe; /** * Constructor for objects of class Morse_Uebersetzer */ public Morse_Uebersetzer() { // initialise instance variables zustand = 0; // Startzustand ausgabe = ""; } private static String zustandWechseln(char eingabe){ String output = ""; // lokale Variable zum Zurückgeben switch (zustand){ case 0: { switch (eingabe){ case '#': { zustand = 0; output = " "; break; } case '-': { zustand = 2; break; } case '.':{ zustand = 1; break; } default : { zustand = -1; break; } } break; } case 1: { switch (eingabe){ case '#': { zustand = 0; output = "E"; break; } case '-': { zustand = 12; break; } case '.':{ zustand = 11; break; } default : { zustand = -1; break; } } break; } case 11: { switch (eingabe){ case '#': { zustand = 0; output = "I"; break; } case '-': { zustand = 112; break; } case '.':{ zustand = 111; break; } default : { zustand = -1; break; } } break; } case 111: { switch (eingabe){ case '#': { zustand = 0; output = "S"; break; } case '-': { zustand = 1112; break; } case '.':{ zustand = 1111; break; } default : { zustand = -1; break; } } break; } case 1111: { switch (eingabe){ case '#': { zustand = 0; output = "H"; break; } default : { zustand = -1; break; } } break; } case 1112: { switch (eingabe){ case '#': { zustand = 0; output = "V"; break; } default : { zustand = -1; break; } } break; } case 12: { switch (eingabe){ case '#': { zustand = 0; output = "A"; break; } case '-': { zustand = 122; break; } case '.':{ zustand = 121; break; } default : { zustand = -1; break; } } break; } case 121: { switch (eingabe){ case '#': { zustand = 0; output = "R"; break; } case '.':{ zustand = 1211; break; } default : { zustand = -1; break; } } break; } case 1211: { switch (eingabe){ case '#': { zustand = 0; output = "L"; break; } default : { zustand = -1; break; } } break; } case 112: { switch (eingabe){ case '#': { zustand = 0; output = "U"; break; } case '.':{ zustand = 1121; break; } default : { zustand = -1; break; } } break; } case 1121: { switch (eingabe){ case '#': { zustand = 0; output = "F"; break; } default : { zustand = -1; break; } } break; } case 1221: { switch (eingabe){ case '#': { zustand = 0; output = "P"; break; } default : { zustand = -1; break; } } break; } case 122: { switch (eingabe){ case '#': { zustand = 0; output = "W"; break; } case '-': { zustand = 1222; break; } case '.':{ zustand = 1221; break; } default : { zustand = -1; break; } } break; } case 1222: { switch (eingabe){ case '#': { zustand = 0; output = "J"; break; } default : { zustand = -1; break; } } break; } case 2: { switch (eingabe){ case '#': { zustand = 0; output = "T"; break; } case '-': { zustand = 22; break; } case '.':{ zustand = 21; break; } default : { zustand = -1; break; } } break; } case 21: { switch (eingabe){ case '#': { zustand = 0; output = "N"; break; } case '-': { zustand = 212; break; } case '.':{ zustand = 211; break; } default : { zustand = -1; break; } } break; } case 211: { switch (eingabe){ case '#': { zustand = 0; output = "D"; break; } case '-': { zustand = 2112; break; } case '.':{ zustand = 2111; break; } default : { zustand = -1; break; } } break; } case 2111: { switch (eingabe){ case '#': { zustand = 0; output = "B"; break; } default : { zustand = -1; break; } } break; } case 2112: { switch (eingabe){ case '#': { zustand = 0; output = "X"; break; } default : { zustand = -1; break; } } break; } case 212: { switch (eingabe){ case '#': { zustand = 0; output = "K"; break; } case '-': { zustand = 2122; break; } case '.':{ zustand = 2121; break; } default : { zustand = -1; break; } } break; } case 2121: { switch (eingabe){ case '#': { zustand = 0; output = "C"; break; } default : { zustand = -1; break; } } break; } case 2122: { switch (eingabe){ case '#': { zustand = 0; output = "Y"; break; } default : { zustand = -1; break; } } break; } case 22: { switch (eingabe){ case '#': { zustand = 0; output = "M"; break; } case '-': { zustand = 222; break; } case '.':{ zustand = 221; break; } default : { zustand = -1; break; } } break; } case 222: { switch (eingabe){ case '#': { zustand = 0; output = "O"; break; } default : { zustand = -1; break; } } break; } case 221: { switch (eingabe){ case '#': { zustand = 0; output = "G"; break; } case '-': { zustand = 2212; break; } case '.':{ zustand = 2211; break; } default : { zustand = -1; break; } } break; } case 2212: { switch (eingabe){ case '#': { zustand = 0; output = "Q"; break; } default : { zustand = -1; break; } } break; } case 2211: { switch (eingabe){ case '#': { zustand = 0; output = "Z"; break; } default : { zustand = -1; break; } } break; } } return output; } public static boolean wortUntersuchen(String text){ boolean wortErkannt = false; System.out.println("Eingabe: " + text); System.out.print("Übersetzung: "); for (int i = 0; i < text.length(); i++){ ausgabe = zustandWechseln(text.charAt(i)); System.out.print(ausgabe); try { Thread.sleep(250); } catch (Exception e){ } } if (zustand == 0){ wortErkannt = true; System.out.println(); } zustand = 0; // Zurücksetzen des Automaten ausgabe = ""; return wortErkannt; } }