gpt4 book ai didi

Java - 分割莫尔斯电码,不识别单个莫尔斯电码

转载 作者:行者123 更新时间:2023-12-02 02:34:56 25 4
gpt4 key购买 nike

我要拔掉我的头发…是的,它已经全部发布了,不,我似乎无法理解我的错误。我知道我正在尝试处理字符和字符串的细微差别。但我的输出没有帮助,所以也许其他人可以?下面是我得到的输出以及提供给我的代码。

输入:
...
无输出

此输入
... ---
输出
电子
电子

和这个输入

...|---
输出
电子
电子

只有第一个莫尔斯“字符”(应该是“s”),忽略管道和/或空格之后的其余部分

public static void morseToEnglish() {

String englishArray[] = {"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"};
String morseArray[] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".--- ", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."};

//String translatedText = "";
//String newEnglishChar;

System.out.println("Enter Morse, separate each letter or digit with a single space, separate words with '|' ");
Scanner input = new Scanner(System.in);

String morseSentence = input.nextLine();

String[] words = morseSentence.split("|");

for (String word: words) {

String[] morseChars = word.split(" ");

for (String morseChar : morseChars) {

if (morseChar.isEmpty()) { continue; }

for (int i = 0; i < words.length; i++) {

if (morseChar.equals(morseArray[i])) {

System.out.println(englishArray[i]);

//newEnglishChar = englishArray[i];
//translatedText = translatedText + newEnglishChar;
}
}
}
}
//System.out.println(translatedText);
}

我没有收到任何编译错误。该代码工作正常,我只是告诉它错误的指令,所以我的输出不是我想要的。在我看来,扫描仪正在输入莫尔斯电码,例如'...',并将其翻译为三个 e 而不是一个 s。我尝试过异常(exception)情况 (if(!.contains)) (或多或少),但它不起作用,而且似乎条件过多。我觉得我只是没有以正确的方式对待正确的物体。真的,如果第二种情况(两个莫尔斯字符,用空格分隔)能够正常工作,那就太好了。在这一点上,单个莫尔斯字符的要求可能太多了。最重要的问题是:我在哪里告诉 Java 可以将三个点视为三个单独的字母?为什么?......我希望这有帮助。

最佳答案

您的代码有两个问题:

  • |regex metacharacter ,因此您需要使用 morseSentence.split("[|]") 来转义它。 ,并且
  • 您用错了length在内循环中:应该是 morseArray.length而不是words.length

morseArray 中的所有字符串是唯一的,因此您可以设置 break一旦找到匹配项,就进入嵌套循环。

Demo.

注意:您可以受益于关联容器来执行无需循环的映射 ( Map<K,V> )。

关于Java - 分割莫尔斯电码,不识别单个莫尔斯电码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46516863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com