【发布时间】:2020-05-10 01:38:56
【问题描述】:
所以我在“”处分裂。问题是摩尔斯电码将每个单词除以三个空格。 “”。
所以当我翻译它时,它总是打印出每个写在一起的单词,中间没有空格。
这就是我所拥有的。我使用 StringBuilder 的原因很明显。
public class MorseCodeDecoder {
public static String decode(String morseCode) {
String word = "";
String character = "";
//count how much space is inbetween lines.
StringBuilder codeTwo = new StringBuilder();
String[] output = morseCode.split(" ");
for (int i = 0; i < output.length; i++) {
在这里,我尝试做一个单独的 if 语句。如果摩斯电码包含三个空格,则背靠背追加一个空格。
//if(morseCode.contains(" ")) codeTwo.append(" "); (or \\s maybe, doesnt matter)
switch (output[i]) {
case " ":
codeTwo.append(" ");
break;
case ".-":
codeTwo.append("A");
break;
case "-...":
codeTwo.append("B");
break;
case "-.-.":
codeTwo.append("C");
break;
case "-..":
codeTwo.append("D");
break;
case ".":
codeTwo.append("E");
break;
case "..-.":
codeTwo.append("F");
break;
case "--.":
codeTwo.append("G");
break;
case "....":
codeTwo.append("H");
break;
case "..":
codeTwo.append("I");
break;
case ".---":
codeTwo.append("J");
break;
case "-.-":
codeTwo.append("K");
break;
case ".-..":
codeTwo.append("L");
break;
case "--":
codeTwo.append("M");
break;
case "-.":
codeTwo.append("N");
break;
case "---":
codeTwo.append("O");
break;
case ".--.":
codeTwo.append("P");
break;
case "--.-":
codeTwo.append("Q");
break;
case ".-.":
codeTwo.append("R");
break;
case "...":
codeTwo.append("S");
break;
case "-":
codeTwo.append("T");
break;
case "..-":
codeTwo.append("U");
break;
case "...-":
codeTwo.append("V");
break;
case ".--":
codeTwo.append("W");
break;
case "-..-":
codeTwo.append("X");
break;
case "-.--":
codeTwo.append("Y");
break;
case "--..":
codeTwo.append("Z");
break;
}
}
return codeTwo.toString();
}
}
对于输入: .... . -.-- .--- ..- -.. . 预期输出:“HEY JUDE”
【问题讨论】:
-
您能否提供一个预期的输入和预期的输出,以及您当前的输入和当前输出作为例子?
-
为什么不将字符串中的所有三个空格替换为单个空格。此外,在你的 for 循环中,在 switch 部分之后,附加一个空格,以便结果将单词分开。
标签: java string loops switch-statement morse-code