(Справка по урокам Java для средней школы) Путаница при преобразовании английских букв в азбуку Морзе

1

Я делаю проект для моего класса в области компьютерных наук, и я сталкиваюсь с некоторой путаницей. Мне поручено написать программу, которая переводит введенное пользователем сообщение с английского на код Морзе. Я выполнил основную часть задания, но я не могу понять, как именно происходит преобразование пользовательского сообщения в код Морзе.

import java.util.*;
import java.io.File;
import java.io.IOException;
public class MorseCode
{
public MorseCode()
{

}

//Reads in file containing Morse code and stores into an array of Strings
public static String [] readFile() throws IOException
{
    String [] codes = new String[36];
    int index = 0;
    Scanner fileScanner = new Scanner(new File("morsecode.txt"));

    while( fileScanner.hasNextLine() )
    {
        codes[index] = fileScanner.nextLine();
        index++;
    }

    return codes;
}

//Converts the array of morse codes to an array of its corresponding letter
public static String [] findChars(String [] morseCode)
{
    String [] alphabet = {"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"};

    for( int index = 0; index < morseCode.length; index++)
    {
        morseCode[index] = alphabet[index];
    }

    return morseCode;
}
}

Главный

На данный момент просто используется для тестирования, чтобы убедиться, что все работает по назначению. И код Морзе, и его алфавитный и числовой эквивалентные выходы правильно.

import java.util.*;
import java.io.File;
import java.io.IOException;
public class MorseCodeTester
{
public static void main(String [] args) throws IOException
{
    Scanner in = new Scanner(System.in);
    //Original Morse Code
    String [] morseCode = MorseCode.readFile();

    //Conversion to standard english letters
    String [] toConvert = MorseCode.readFile();
    String [] codeToLetters = MorseCode.findChars(toConvert);

    for( int index = 0; index < morseCode.length; index++)
    {
        System.out.println(morseCode[index]);
    }

    System.out.println();

    for( int index = 0; index < morseCode.length; index++)
    {
        System.out.println(codeToLetters[index]);
    }
}
}

Как уже говорилось ранее, моя путаница исходит из фактического преобразования английского языка в код Морзе после ввода пользователем желаемого сообщения. Если бы кто-нибудь мог указать мне в правильном направлении, это было бы очень признательно.

  • 0
    ты гуглишь это? эта ссылка поможет
Теги:
string
arrays

2 ответа

4

Вы можете сохранить каждый символ на карте вместе со своей соответствующей строкой кода Морзе. например

HashMap<String, String> codes = new HashMap<String, String>();
codes.put("a", ".-");
codes.put("b", "-...");

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

Например:

String str = "To be converted to morse";
StringBuilder morseSB = new StringBuilder();
for(int i=0; i< str.length(); i++)
{
    morseSB.append(codes.get(Character.toString(str.charAt(i)).toLowerCase()));
}

String morseResult = morseSB.toString();

Примечание: вам нужно будет добавить некоторые меры предосторожности. например, проверка, является ли результат из code.get() нулевым, и вам, возможно, придется обрабатывать другие символы, такие как пробелы и периоды.

  • 0
    Так-то лучше :).
  • 0
    Это лучше :) ха-ха. Хотя это, вероятно, лучший способ решить эту проблему, я думаю, что на самом деле это может не сильно помочь ОП.
Показать ещё 2 комментария
0

эта функция преобразует "Hello world" в код Морзе

public static String charToMorse( String s ){
    if( s.equals( "H" ) || s.equals("h"))
        return "....";
    else if ( s.equals( "E" ) || s.equals("e"))
        return "."
    // other alphabet will placed here
}

и напишите другой метод для перемещения символа строки

public static void showMorse( String s ){
    for( int i=0 ; i < s.length() ; i++ )
        System.out.printf( "%s " , charToMorse( s[i] ) );
    System.out.println();
}

это изображение показывает код Морзе, который вам нужен Изображение 174551

Ещё вопросы

Сообщество Overcoder
Наверх
Меню