java - 根据 HashMap 检查字符串

标签 java string hash morse-code

我想构建一个将英语翻译成摩尔斯电码的程序,反之亦然,我决定使用散列映射来执行此操作,但我不确定如何通过散列映射运行字符串并获得翻译在最后。这是我目前的代码:

import java.util.HashMap;
import java.util.Map;

public class MorseCodeTranslator{

public static String translateToMorseCode() {
    String englishtoMorse = "";
    String translation = null;

    Map<Character, String> morse = new HashMap<Character, String>();
    morse.put('a', "._");
    morse.put('b', "_...");
    morse.put('c',  "_._");
    morse.put('d',  "_..");
    morse.put('e',    ".");
    morse.put('f', ".._.");
    morse.put('g',  "__.");
    morse.put('h', "....");
    morse.put('i',   "..");
    morse.put('j', ".___");
    morse.put('k',   "_.");
    morse.put('l', "._..");
    morse.put('m',   "__");
    morse.put('n',   "_.");
    morse.put('o',  "___");
    morse.put('p', ".__.");
    morse.put('q', "__._");
    morse.put('r', "._.");
    morse.put('s',  "...");
    morse.put('t',   "_");
    morse.put('u',  ".._");
    morse.put('v', "..._");
    morse.put('w',  ".__");
    morse.put('x', "_.._");
    morse.put('y', "_.__");
    morse.put('z', "__..");

    return translation;
}    

public static String translateFromMorseCode() {
    String morsetoEnglish = "";
    String translation = null;

    Map<Character, String> morse = new HashMap<Character, String>();
    morse.put('a', "._");
    morse.put('b', "_...");
    morse.put('c',  "_._");
    morse.put('d',  "_..");
    morse.put('e',    ".");
    morse.put('f', ".._.");
    morse.put('g',  "__.");
    morse.put('h', "....");
    morse.put('i',   "..");
    morse.put('j', ".___");
    morse.put('k',   "_.");
    morse.put('l', "._..");
    morse.put('m',   "__");
    morse.put('n',   "_.");
    morse.put('o',  "___");
    morse.put('p', ".__.");
    morse.put('q', "__._");
    morse.put('r', "._.");
    morse.put('s',  "...");
    morse.put('t',   "_");
    morse.put('u',  ".._");
    morse.put('v', "..._");
    morse.put('w',  ".__");
    morse.put('x', "_.._");
    morse.put('y', "_.__");
    morse.put('z', "__..");  

    return translation;
}
}  

我希望能够通过 HashMap 运行 englishtoMorsemorsetoEnglish 中的任何内容,然后将字符转换为它们在 HashMap 中关联的值在 translation 中输出它们。

最佳答案

将 map 创建为静态字段。添加莫尔斯字母表。然后创建一个方法 它将要翻译的文本作为参数。然后迭代文本以翻译每个字符并使用翻译后的字符创建将返回的字符串。

我已经用你的代码和我的解释做了一个例子。 该代码仅适用于莫尔斯英文文本。您必须添加其他方向。

import java.util.*;
import java.lang.*;
import java.io.*;

class Ideone
{

    private static final Map<Character, String> morse = new HashMap<Character, String>();
    static {
    morse.put('a', "._");
    morse.put('b', "_...");
    morse.put('c',  "_._");
    morse.put('d',  "_..");
    morse.put('e',    ".");
    morse.put('f', ".._.");
    morse.put('g',  "__.");
    morse.put('h', "....");
    morse.put('i',   "..");
    morse.put('j', ".___");
    morse.put('k',   "_.");
    morse.put('l', "._..");
    morse.put('m',   "__");
    morse.put('n',   "_.");
    morse.put('o',  "___");
    morse.put('p', ".__.");
    morse.put('q', "__._");
    morse.put('r', "._.");
    morse.put('s',  "...");
    morse.put('t',   "_");
    morse.put('u',  ".._");
    morse.put('v', "..._");
    morse.put('w',  ".__");
    morse.put('x', "_.._");
    morse.put('y', "_.__");
    morse.put('z', "__..");
    morse.put(' ', " ");
    }
    public static void main (String[] args) throws java.lang.Exception
    {
        String str = "Hello World";
        System.out.println(translate(str));
    }



    public static String translate(String text) {
        StringBuilder builder = new StringBuilder();
        String lower = text.toLowerCase();
        for (int i = 0; i < text.length(); i++) {
            builder.append(morse.get(lower.charAt(i)));
        }
        return builder.toString();
    }    

}

输出:

......_..._..___ ._____._.._.._..

工作示例:

http://ideone.com/uWGAtU

关于java - 根据 HashMap 检查字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33827442/

相关文章:

java - 使用注释的 JAXB 验证

Scala函数获取字母表中的下一个字母

c++ - 如何在 C++ 中使用 std::vector 作为 std::unordered_map 的键类型?

c++ - 如何哈希一个三态二维数组?

c# - 如何创建简单的短哈希值? C#

java - 解析不同格式的日期的推荐方法是什么?

来自 XML 代码的 Java GetAttribute

java - 如何表示参数值在 JUnit 测试中无关紧要?

python - 如何从 Python 中的字符串中删除所有空格

python - 类型错误 : Can't convert 'int' object to str implicitly Python 3