Processing 处理3问题中莫尔斯电码编码器到解码器的转换

Processing 处理3问题中莫尔斯电码编码器到解码器的转换,processing,encoder,decoder,morse-code,Processing,Encoder,Decoder,Morse Code,我正在试着做莫尔斯电码解码处理3。我有摩尔斯电码编码器的密码。但我正在努力将编码器转换为解码器 我还想通过点击输入摩尔斯电码,但这将是转换后的下一步 我试图把输入、输出和字母表改成莫尔斯电码,但在最后一段代码中,我结巴了 这是原始编码器: 这是我修改过的解码器代码: String textInput; String textOutput; void setup() { textInput = decodeMorseCode(textInput); textOutput = "";

我正在试着做莫尔斯电码解码处理3。我有摩尔斯电码编码器的密码。但我正在努力将编码器转换为解码器

我还想通过点击输入摩尔斯电码,但这将是转换后的下一步

我试图把输入、输出和字母表改成莫尔斯电码,但在最后一段代码中,我结巴了

这是原始编码器:

这是我修改过的解码器代码:

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
    未初始化。在使用它之前,您必须在此处输入一些内容。我如何才能做到这一点?