【发布时间】:2017-10-01 21:01:54
【问题描述】:
我正在拔头发…… 是的,它已经全部发布了,不,我似乎无法理解我的错误。我知道我正在尝试处理字符和字符串的细微差别。但是我的输出没有帮助,所以也许其他人可以?下面是我得到的输出和提供给我的代码。
输入:
...
没有输出
这个输入
... ---
输出
电子
电子
e
还有这个输入
...|---
输出
电子
电子
e
只有第一个莫尔斯“字符”(应该是'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。我曾尝试过例外情况(if(!.contains))(或多或少),但它不起作用并且似乎条件过高。 我觉得我只是没有以正确的方式对待正确的对象。真的,如果第二种情况(两个莫尔斯字符,用空格分隔)会起作用,我会很好。在这一点上,一个单一的莫尔斯字符可能太多了。 大问题:我在哪里告诉 Java 可以将三个点视为三个单独的字母?为什么?......我希望这会有所帮助。
【问题讨论】:
-
欢迎来到 Stack Overflow!看来您需要学习使用调试器。请帮助自己一些complementary debugging techniques。如果您之后仍有问题,请随时回来提出更具体的问题。
标签: java