Уже есть ответы на некоторые вопросы, но, возможно, вы захотите рассмотреть этот подход:
public static String decodeMorseCode(String morseText) {
String realText = "";
String morseLetter = "";
int counter = 0;
List<String> morseMessage;
//Easier splitting of the String with morse code
String[] morseLetters = morseText.split(" ");
morseMessage = Arrays.asList(morseLetters);
for (String morse : morseMessage) {
for (String letter : morsecodes) {
if (morse.equals(letter)) {
System.out.println(letter);
//Here comes mapping from Morse-to-English.
}
}
}
return realText;
}
То, что я здесь сделал, - это список, который будет хранить ваше сообщение по буквам и которыйэто легче зациклить.Для этого сначала нужно разбить строку на массив, содержащий отдельные буквы, а затем преобразовать его в список.Затем я сравниваю каждую букву из сообщения азбуки Морзе с вашим «словарём» азбуки Морзе, и если вы запустите его, вы увидите, что он способен распознавать каждую отдельную букву.
Осталось создать картуперевести представление азбуки Морзе в буквы английского алфавита. Примечание : может быть, было бы лучше, если бы у вас не было массива азбуки Морзе, но он был бы в виде карты с английскими отображениями?
Например:
private static Map<Character, String> morseToEnglish;
public static void main (String[] args) {
morseToEnglish = new HashMap<Character, String>();
morseToEnglish.put('a', ".-");
morseToEnglish.put('b', "-...");
morseToEnglish.put('c', "-.-");
morseToEnglish.put('d', "-..");
...
А затем зациклите и отобразите:
for (String morse : morseMessage) {
for (String letter : morseToEnglish.values()) {
if (morse.equals(letter)) {
for (Character character : morseToEnglish.keySet()) {
if (morseToEnglish.get(character).equals(letter)) {
System.out.print(character);
}
}
}
}
}
Сообщение, которое вы кодировали Морзе, было 'helloworld'
.