我想将莫尔斯电码翻译成单词。还有一个小问题

问题描述 投票:0回答:1

所以我在“”分裂。问题在于,莫尔斯电码将每个单词除以三个空格。 ”。

因此,当我翻译时,它总是打印出每个单词在一起写的字,中间没有空格。

这里有我的。我使用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语句。如果morseCode包含三个空格,请追加一个空格。

//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”

java string loops switch-statement morse-code
1个回答
0
投票

您可以使用正则表达式来代替空格...类似于这种模式:

([._])+\s*

说明:我们正在寻找至少一个点(。)或下划线(_)的实例,后跟零个或多个空格...

我在此示例中使用了它:

._ _... _._   .._ ..._ .__

哪个是:ABC UVW

© www.soinside.com 2019 - 2024. All rights reserved.