java - 使用 Java 将摩尔斯电码转换为英文文本

标签 java string

我最近有一项任务是将英语转换为莫尔斯电码,并将莫尔斯电码转换为英语。输入摩尔斯电码时,我的老师希望单个字母以 1 个空格分隔,单词以“|”分隔。例如,- --- | -...是“成为”。我能够让英语到莫尔斯完美地工作,但我对莫尔斯到英语不知所措。我不知道如何让 for 循环在正确的点停止并将其与数组中的代码之一匹配。

请注意,我的老师不喜欢 Scanner,所以他使用自己的输入系统。我熟悉他的方法,所以避免使用 Scanner 将不胜感激

public class Project1
{
    public static void main( String [] args )
    {
        String morse[] = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..",
            "--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--..",
            "|",".---","..---","...--","....-",".....","-....","--...","---..","----.","-----"};    
        String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890";

        String inputType = new String();
        inputType = Input.getString( "Is your phrase in Morse Code or English? Enter 'morse' for Morse Code and 'english' for English" );


        if( inputType.equalsIgnoreCase("morse") )
            morseToEnglish(alphabet, morse);
        else if( inputType.equalsIgnoreCase("english") )
            englishToMorse(alphabet, morse);
        else    
            System.out.println("Your entry is invalid");

    }

    public static void englishToMorse(String alphabet, String morse[])
    {
        String phrase = Input.getString("Enter your english phrase.");
        phrase = phrase.toUpperCase();

        for( int i = 0; i < phrase.length(); i++ )
        {
            if( phrase.charAt(i) == ' ' )
            {
                System.out.print("| ");
                continue;
            }

            for( int j = 0; j < alphabet.length(); j++ )
            {
                if( alphabet.charAt(j) == phrase.charAt(i) )
                {
                    System.out.print( morse[j] + " " );
                    break;
                }
            }
        }
    }

    public static void morseToEnglish(String alphabet, String morse[])
    {
        String morseCode = Input.getString("Enter a phrase in morse code.");



        for( int i = 0; i < morseCode.length(); i++ )
        {
            for( int j = 0; j < morse.length; j++ )
            {
                if ( morse[j] == morseCode.charAt(i))
                    System.out.print( alphabet.charAt(j) );

            }
        }   
    }
}

任何指针将不胜感激。哦,抱歉,如果 morseToEnglish 代码看起来不连贯和糟糕,我已经尝试了很多不同的东西并且不知所措。

最佳答案

我建议使用 String.split()。您可以按 | 拆分,然后按空格进一步拆分它们。带有打印字符的 toString() 的枚举类型可能有助于划分转换逻辑(如果您不知道开关,这是学习它们的好机会)。然后根据需要连接字符串并添加空格。

String.Split() 是一个了不起的工具。学习它,您将受益匪浅。

关于java - 使用 Java 将摩尔斯电码转换为英文文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29572916/

相关文章:

java - 为什么我的代码不起作用? - 获取用户输入以启动 for 循环

java - 限制 <form :select> from being databound to modelAttribute if a specific <form:option> is selected

java - 在java中将带空格的字符串转换为整数

java - Java中的Membase节点故障处理

java - 简单的性能测试,不同的结果

java - 将十进制格式(html 编码)的 Unicode 字符字符串转换为常规字符串

c++ - 问题解析字符串

c++ - 全局外部人员。字符串和字符之间的区别*

java - Wifi 连接应用程序崩溃(Java、Android)

java - oracle timesten 内存数据库的 JDBC 连接