当前位置: 首页 > 知识库问答 >
问题:

莫尔斯电码翻译器(简单)

莫振
2023-03-14

我正在为我的编程介绍课编写一个简单的莫尔斯电码翻译器。这是一个非常简单的设计基础上的技术,我已经教。

这个程序工作于单个字符转换,但不能做单词或句子。我认为问题与末尾的Morse[index]语句有关,但我不知道如何打印整个翻译文本。

public class Exercise12_9
{
    public static void main(String[] args)
    {
        String[] 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",
                  ",", ".", "?" };

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


        Scanner keyboard = new Scanner(System.in);

        String userInput;

        int index;

        index = 0;

        System.out.println(" This is an English to Morse Code Translator.  ");
        System.out.println(" Please enter what you would like translate ");
        System.out.println("             into Morse Code. ");
        System.out.println(" ============================================ ");

        userInput = keyboard.next();

        userInput = userInput.toLowerCase();

        for (index = 0; index < userInput.length(); index++)           
        {
            char [] chars = userInput.toCharArray();

            if (userInput.equals(english[index]))
            {    
                System.out.println(" Translated : " + morse[index]);       
            }
        }  
    }
}

共有1个答案

艾和通
2023-03-14

这里有几件事情需要解决,所以让我们来看看:

scanner.next()只提供下一个令牌。在您的情况下,您需要整个字符串。尝试使用scanner.nextline()

目前代码存在的方式,您正在逐步通过输入(正确),但对于输入中的每个字符,您没有获取等效的莫尔斯代码!而是将整个输入与English[index]中的单个英文字符进行比较。请看下面修正逻辑的建议。

还要注意,您在每个字符后面都打印出一个翻译字符串,我认为您不想这样做。

给你几个建议:

>

  • 如果要处理输入中的空格字符,请将其添加到数组中!
  • 我强烈建议将你的英语和莫尔斯字符存储在地图中。这样,你就可以很容易地查找相当于英语字符的莫尔斯。如果您愿意,您的数组仍然可以,但也许在它们初始化后添加以下内容:

    final Map<String, String> mapping = new HashMap<String, String>();
    for (int i = 0; i < english.length; ++i) {
        mapping.put(english[i], morse[i]);
    }
    

  •  类似资料:
    • 我必须创建莫尔斯到英语,反之亦然的翻译。英语到morse部分工作,但每当我试图用morse输入一些东西时,它会给我一个ArrayIndexOutofBounds异常,我被如何修复它所困扰。我已经放入了一个分裂函数,但我只是不确定为什么我会得到异常。

    • 到目前为止,这是我的代码(是的,它是法语的,因为我在一个讲法语的省份和学校,所以如果你需要澄清我的代码,请告诉我): 所以是啊,对不起我的英语如果它不是那么好

    • 及其对应的莫尔斯电码 作为测试用语。当我用这个短语把英语翻译成莫尔斯电码时,我得到了

    • 机器翻译是指将一段文本从一种语言自动翻译到另一种语言。因为一段文本序列在不同语言中的长度不一定相同,所以我们使用机器翻译为例来介绍编码器—解码器和注意力机制的应用。 读取和预处理数据 我们先定义一些特殊符号。其中“<pad>”(padding)符号用来添加在较短序列后,直到每个序列等长,而“<bos>”和“<eos>”符号分别表示序列的开始和结束。 import collections impo

    • 所有编程语言都被翻译成机器代码,然后由硬件解释器执行。但是什么翻译译码器的代码,例如编译器代码和解释器代码?编译器翻译源代码,但编译器也用某种语言编写,那么什么翻译编译器代码/代码呢? 谢谢

    • 《Pro Git》是官方推荐的 Git 教程,由浅入深,涉及到 Git 的方方面面。本项目是《Pro Git》第二版的简体中文翻译。 该项目正在进行之中,欢迎更多有兴趣的朋友参与到本书的翻译工作中!