📌  相关文章
📜  将英文文本转换为摩尔斯电码,反之亦然的Java程序(1)

📅  最后修改于: 2023-12-03 15:09:39.163000             🧑  作者: Mango

将英文文本转换为摩尔斯电码,反之亦然的Java程序

本文介绍如何用Java编写一个将英文文本转换为摩尔斯电码,以及将摩尔斯电码转换为英文文本的程序。

程序实现
将英文文本转换为摩尔斯电码

摩尔斯电码是用点、划表示字母、数字和标点符号的一种电报码。我们可以将每个英文字母、数字和标点符号都映射到一段摩尔斯电码,然后将这些电码拼接起来形成完整的电文。

以下是将英文文本转换为摩尔斯电码的Java代码:

public static String toMorseCode(String text) {
    // 摩尔斯电码表
    String[] morseCodes = {
            ".-",   // 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
    };

    StringBuilder morseCode = new StringBuilder();
    for (int i = 0; i < text.length(); i++) {
        char c = Character.toUpperCase(text.charAt(i));
        if (c >= 'A' && c <= 'Z') { // 字母
            morseCode.append(morseCodes[c - 'A']).append(' ');
        } else if (c >= '0' && c <= '9') { // 数字
            morseCode.append(morseCodes[c - '0' + 26]).append(' ');
        } else if (c == ' ') { // 空格
            morseCode.append("/ ");
        }
    }
    return morseCode.toString();
}
将摩尔斯电码转换为英文文本

将摩尔斯电码转换为英文文本可以反向进行。我们可以先将整个电文按空格分割为一个一个的电码,然后将每个电码映射回英文字符。

以下是将摩尔斯电码转换为英文文本的Java代码:

public static String toText(String morseCode) {
    // 摩尔斯电码表
    String[] morseCodes = {
            ".-",   // 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
    };

    StringBuilder text = new StringBuilder();
    String[] codes = morseCode.split(" ");
    for (int i = 0; i < codes.length; i++) {
        String code = codes[i];
        if (code.equals("/")) { // 空格
            text.append(' ');
        } else { // 字符或数字
            for (int j = 0; j < morseCodes.length; j++) {
                if (morseCodes[j].equals(code)) {
                    char c = (char) (j <= 25 ? j + 'A' : j - 26 + '0');
                    text.append(c);
                    break;
                }
            }
        }
    }
    return text.toString();
}
程序测试

我们可以在main方法中对程序进行测试:

public static void main(String[] args) {
    String originalText = "HELLO WORLD";
    String morseCode = toMorseCode(originalText);
    System.out.println("将原文 '" + originalText + "' 转换为摩尔斯电码得到: " + morseCode);
    String convertedText = toText(morseCode);
    System.out.println("将摩尔斯电码 '" + morseCode + "' 转换为原文得到: " + convertedText);
}

程序运行结果如下:

将原文 'HELLO WORLD' 转换为摩尔斯电码得到: .... . .-.. .-.. --- / .-- --- .-. .-.. -.. 
将摩尔斯电码 '.... . .-.. .-.. --- / .-- --- .-. .-.. -.. ' 转换为原文得到: HELLO WORLD
总结

本文介绍了如何用Java编写一个将英文文本转换为摩尔斯电码,以及将摩尔斯电码转换为英文文本的程序。通过这个例子我们可以学习到字符串处理、数组使用等基本的Java编程知识。