Processing 处理3问题中莫尔斯电码编码器到解码器的转换
我正在试着做莫尔斯电码解码处理3。我有摩尔斯电码编码器的密码。但我正在努力将编码器转换为解码器 我还想通过点击输入摩尔斯电码,但这将是转换后的下一步 我试图把输入、输出和字母表改成莫尔斯电码,但在最后一段代码中,我结巴了 这是原始编码器: 这是我修改过的解码器代码:Processing 处理3问题中莫尔斯电码编码器到解码器的转换,processing,encoder,decoder,morse-code,Processing,Encoder,Decoder,Morse Code,我正在试着做莫尔斯电码解码处理3。我有摩尔斯电码编码器的密码。但我正在努力将编码器转换为解码器 我还想通过点击输入摩尔斯电码,但这将是转换后的下一步 我试图把输入、输出和字母表改成莫尔斯电码,但在最后一段代码中,我结巴了 这是原始编码器: 这是我修改过的解码器代码: String textInput; String textOutput; void setup() { textInput = decodeMorseCode(textInput); textOutput = "";
String textInput;
String textOutput;
void setup() {
textInput = decodeMorseCode(textInput);
textOutput = "";
println("Morse code: " + textInput);
println("Text output: " + textOutput);
}
void draw() {
}
String decodeMorseCode(String in_string) {
String MorseCodeInput = in_string.toLowerCase();
String TextOutput = new String();
String[] MorseCodeArray = {
"._", "_...", "_._.", "_..", ".", ".._.", "__.", "....", "..", ".___", "_._", "._..", "__",
"_.", "___", ".__.", "__._", "._.", "...", "_", ".._", "..._", ".__", "_.._", "_.__", "__.."
};
String[] AlphabetArray = {
"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"
};
for (int i=0; i<TextInput.length(); i++) {
for (int j=0; j<AlphabetArray.length; j++) {
if (String.valueOf(TextInput.charAt(i)).equals(AlphabetArray[j])) {
MorseCode += MorseCodeArray[j] + " " ;
}
}
}
return MorseCode;
}
字符串文本输入;
字符串文本输出;
无效设置(){
textInput=解码莫尔斯电码(textInput);
textOutput=“”;
println(“摩尔斯电码:+textInput”);
println(“文本输出:“+textOutput”);
}
作废提款(){
}
字符串解码MORSECODE(字符串中的字符串){
String MorseCodeInput=in_String.toLowerCase();
String TextOutput=新字符串();
字符串[]MorseCodeArray={
"._", "_...", "_._.", "_..", ".", ".._.", "__.", "....", "..", ".___", "_._", "._..", "__",
"_.", "___", ".__.", "__._", "._.", "...", "_", ".._", "..._", ".__", "_.._", "_.__", "__.."
};
字符串[]字母数组={
“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”
};
对于(inti=0;i,我很乐意帮助您完成这一任务,但首先我必须指出,这个社区并不是为了教授基础知识
我非常喜欢
以下是一些关于处理的基本知识,您可能知道,也可能不知道:
处理有两种非常重要的方法:setup()
和draw()
运行程序时,Processing首先读取所有全局变量。然后读取setup()
,然后读取draw()
。最后一个是每秒运行固定次数的受控循环。这是最神奇的地方
setup()
主要用于“准备”所有内容,因此draw()
循环已准备就绪
我看了一下编码器的代码。它接受一个输入(字母、单词等)并给出一个输出(摩尔斯电码)。编码器应该是相反的:你给程序一些摩尔斯电码,它给你一个翻译
现在,我们来谈谈眼前的问题:
还记得我说过的“不要只说你有错误,告诉我们错误是怎么说的”这很有帮助。我在处理过程中运行了你的代码,我认为这不是第一个问题(好吧,我认为这是个问题,但不是在这一点上使你的代码崩溃的问题)
下面是导致代码崩溃的问题,以及如何处理这些问题。阅读本文将有助于您了解处理,但实际上,请阅读教程
变量TextInput
不存在。取而代之的是您将其命名为MorseCodeInput
,但未在代码中更改它。有两种不同的简单解决方法,请选择一种:
- 您可以将变量
MorseCodeInput
重命名为TextInput
- 您可以在
decodeMorseCode
方法中将TextInput
的每个实例重命名为MorseCodeInput
在应该使用textfoutput
的地方,您使用的是MorseCode
。您必须在以下两个位置将它们重命名为textfoutput
:
MorseCode+=morsecodearay[j]+”;
=>TextOutput+=morsecodearay[j]+”;
返回摩斯密码;
=>返回文本输出;
在setup()
方法中,将输入初始化为一些实际的莫尔斯电码
textInput=“\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
应该这样做
textOutput变量应该是转换的结果。在setup()
方法中,按以下方式使用它:
textOutput=decodeMorseCode(textInput);
耶!没有崩溃!但也没有输出?为什么?有两个原因:
- 首先是因为算法在寻找字母,我们给它点和线
- 第二个原因是它一次只能写一个字符,这对于莫尔斯电码来说毫无意义,因为一个字母是几个点和几行(每个点和几行各有一个字符)
所以…这就是你的立场。代码正在运行,但你仍然有几个问题需要解决。我将给你其中一个问题,因为对于初学者来说,这有点难以理解
下面是如何获取摩尔斯电码的字符串数组。在decodeMorseCode()
函数中,初始化TextInput
变量,如下所示:
String[] TextInput = split(in_string, ' ');
还有那些台词:
for (int i=0; i<TextInput.length; i++) {
// ...
if (String.valueOf(TextInput[i]).equals(AlphabetArray[j])) {
for(int i=0;i请写下您遇到的错误,它有助于人们帮助您。textInput
未初始化。在使用它之前,您必须在此处输入一些内容。我如何才能做到这一点?