我正在为我的编程介绍课编写一个简单的莫尔斯电码翻译器。这是一个非常简单的设计基础上的技术,我已经教。
这个程序工作于单个字符转换,但不能做单词或句子。我认为问题与末尾的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]);
}
}
}
}
这里有几件事情需要解决,所以让我们来看看:
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》第二版的简体中文翻译。 该项目正在进行之中,欢迎更多有兴趣的朋友参与到本书的翻译工作中!