-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 に答える