Применение азбуки Морзе (JAVA Gui)

Я пытаюсь создать приложение с графическим интерфейсом, которое читает английский пользовательский ввод и переводит на азбуку Морзе ( http://ascii-table.com/morse-code.php). Я затронул основные части программы до сих пор. Мой вопрос Каков наилучший способ чтения Морзе? Должен ли я создать текстовый файл для импорта азбуки Морзе или я должен объявить каждый из них в программе для перевода? Следующий вопрос: как мне это сделать? пожалуйста, обратитесь к учебнику, если это возможно. Спасибо за ваше время.

3 ответа

Решение

Поскольку азбука Морзе вряд ли изменится, допустимым вариантом является жесткое кодирование отображения символов в строки кода:

private static Map<Character,String> charToCode = new HashMap<Character,String>();
{
    charToCode.put('A', ".-");
    charToCode.put('B', "-...");
    ...
    charToCode.put('Z', "--..");
}

Эта карта позволяет вам конвертировать сообщения в код по одному символу за раз:

  • Делать StringBuilder за результат
  • Просмотрите символы ввода по одному символу за раз. Ты можешь использовать charAt(i) для этого
  • Преобразовать символ в верхний регистр
  • использование charToCode.get(upperChar) посмотреть кодовое представление персонажа
  • Добавить представление к StringBuilder; добавить пробел после него
  • Когда цикл закончен, конвертируйте StringBuilder в Stringи поместите его на этикетку.

Вы можете иметь два файла, поддерживаемые снаружи. У одного есть сопоставление от Буквы к азбуке Морзе, а другое от Азбуки Морзе к Буквы. Затем вы можете построить оба конвертера, выполнив поиск из соответствующего файла.

Либо вы можете прочитать входные данные от пользователя и сравнить их во время выполнения с предопределенными символами и числами, хранящимися в программе, либо вы можете ввести файл и прочитать его с помощью FileReader

Но вот логика, которую вы должны выполнить для сравнения во время выполнения

 char[] english = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
             'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 
             'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
             ',', '.', '?' };   //Defining a Character Array of the English Letters numbers and Symbols so that we can compare and convert later 

     String[] morse = { ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", 
                ".---", "-.-", ".-..", "--", "-.", "---", ".---.", "--.-", ".-.",
                "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..", ".----",
                "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----.",
                "-----", "--..--", ".-.-.-", "..--.." };

System.out.println("-->Enter the Sentence that you want to Transmit Using the Morse Code ");
        System.out.print("->");
        sentence = br.readLine();
        System.out.println("");
        sentence = sentence.toLowerCase(); //Because morse code is defined only for the lower case letters and the numbers and the Symbols will remain the Same
        char[] morsec = sentence.toCharArray();
        for(int i = 0; i < morsec.length;i++)  //The loop will run till i is less than the number of characters in the Sentence because Every Character needs to Be Converted into the Respective Morse Code 
        {//For Every Letter in the User Input Sentence
            for(int j = 0;j<english.length;j++)   //For Every Character in the morsec array we will have to traverse the entire English Array and find the match so that it can be represented 
            {
                if(english[j] == morsec[i])  //If the Character Present in English array is equal to the character present in the Morsec array then Only Execute 
                {//Always remember that the condition in the Inner loop will be the first to be Equated in the If Statement because that will change until the characters match 
                    answer = answer + morse[j] + " ";  //After Every Letter is generated in the Morse Code we will give a Space 
                }  //Since the Letters in the English char and the symbols present in the morse array are at the Same Index 
            }
        }
        System.out.println("-->The Morse Code Translation is:- ");
        System.out.Println(answer);
Другие вопросы по тегам