-3

我正在尝试编写将英语翻译成摩尔斯电码的东西,反之亦然。我让英语到莫尔斯语运行良好,但我很难以另一种方式转换它。我的意思是|用作单词之间的空格,所以- --- | -... .意思是“成为”。谁能告诉我我的代码部分有什么问题case:1

public class Project {
    public static void main(String[] args)
    {
        String[] morse = { ".- ", "-... ", "-.-. ", "-.. ", ". ", "..-. ", "--. ", ".... ", ".. ",

        ".--- ", "-.- ", ".-.. ", "-- ", "-. ", "--- ", ".--. ", "--.- ", ".-. ", "... ", "- ", "..- ",

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

        int a;
        a = Input.getInt("Enter 1 for Morse to English or enter 2 for English to Morse.");

        switch (a)
        {
        case 2:
        {
            String toMorse = new String();
            toMorse = Input.getString("Enter a sentence.");
            toMorse = toMorse.toUpperCase();
            for (int i = 0; i < toMorse.length(); i++)
            {
                char x = toMorse.charAt(i);
                if (x == ' ') System.out.print(" | ");
                else System.out.print(morse[x - 'A']);
            }

            break;
        }

        case 1:
        {
            String toEnglish = new String();
            toEnglish = Input.getString("Enter your Morse code.");

            String[] parts = toEnglish.split("|");
            for (int x = 0; x < parts.length; x++)
            {
                if (parts.equals(morse[x])) System.out.println(alphabet[x]);
            }

            break;
        }

        default:
        {
            System.out.println("Invalid Response");
        }
        }

    }

}
4

2 回答 2

2
  • split使用正则表达式命令,|是正则表达式中的特殊运算符。而不是|,你想要\\|

    改变

    String[] parts = toEnglish.split("|");

    String[] parts = toEnglish.split("\\|");

  • 当你这样做时:

    if (parts.equals(morse[x]))那么您正在比较对字符串的引用,这不是您想要做的..

    你可能想做:

    if (parts[x].equals(morse[x]))

    现在,parts[x]包含一个字符串。我建议您阅读String#split的文档。

于 2013-04-14T21:59:55.900 回答
0

你可能是有意义continue的,而不是break

  • continue开始外循环的下一次迭代
  • break跳出循环,在for循环结束后执行第一行代码。
于 2013-04-14T22:01:21.860 回答