java - java中使用HashMap的摩尔斯电码

标签 java arraylist hashmap

我尝试用 Java 实现莫尔斯电码翻译器,使用尽可能少的代码,但在我的程序中出现错误,因为 hashmap 超出了边界。是否可以将 map 的大小指定为等于我输入的字符串的长度?但不只是输出字母字符,不少于 26 个。谢谢

    String a = reader.readLine();

    Map<String, String> words = new HashMap<>();
    words.put("s", "***"); //only two characters still
    words.put("o", "---");



    for(int i=0; i<a.length(); i++) 
    {   
        String checker = Character.toString(a.charAt(i));

        if(checker.equals(words.keySet().toArray()[i])) 
        {
            System.out.print(words.values().toArray()[i]+" ");
        }

    }

最佳答案

你只需要查看当前字母是否包含在映射中,如果是,那么你可以在单词 hashmap 中获取它对应的映射。

   String a = reader.nextLine();

    Map<String, String> words = new HashMap<>();
    words.put("s", "***"); //only two characters still
    words.put("o", "---");

    String translated = "";

    for(int i=0; i<a.length(); i++) 
    {   
        String checker = Character.toString(a.charAt(i));

        if(words.containsKey(checker)) 
        {
            translated += words.get(checker);
        }
        else{
            translated += checker;
        }
    }

    System.out.println("Input: " + a + ", Morse: " + translated);

输出

sos
Input: sos, Morse: ***---***
sor
Input: sor, Morse: ***---r

这将转换 map 知道的所有字母,对于那些不知道的字母,它不会改变。

关于java - java中使用HashMap的摩尔斯电码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41987555/

相关文章:

java - 为什么一个大的未引用的 HashMap 会提高 Java 的性能?

Java SQLException 与 JDBC - SQLITE_MISUSE

java - 从列表中删除在另一个列表中索引的那些元素

powershell - 构建 HashMap 的 HashMap

java - 在 java 中维护唯一数组的 ArrayList

javascript - 打印数组列表

java - 验证输入java的最佳实践

java - 带有开关按钮的 Android ListView - 一次只有一个开关处于 Activity 状态

java - 这两种创建对象的方式有什么不同

java - 根据条件(Java/Guava)从列表中提取第一个匹配项?