使用Java哈希映射在MorseCode中转换文本

时间:2018-12-09 21:27:08

标签: java

我必须开发一种方法,将字符串作为参数并将其转换为摩尔斯电码,我决定使用HashMap,但是我不知道如何获取字母的特定值(我将字母设置为键)

package com.company;

import java.lang.reflect.MalformedParameterizedTypeException;
import java.util.*;

public class MorseCode {


public void transformInMorseCode(String prop) {
    HashMap<String, String> morseMap = new HashMap<>();
    morseMap.put("A", ".-");
    morseMap.put("B", "-...");
    morseMap.put("C", "-.-.");
    morseMap.put("D", "-..");
    morseMap.put("E", ".");
    morseMap.put("F", "..-.");
    morseMap.put("G", "--.");
    morseMap.put("H", "....");
    morseMap.put("I", "..");
    morseMap.put("J", ".---");
    morseMap.put("K", "-.-");
    morseMap.put("L", ".-..");
    morseMap.put("M", "--");
    morseMap.put("N", "-.");
    morseMap.put("O", "---");
    morseMap.put("P", ".--.");
    morseMap.put("Q", "--.-");
    morseMap.put("R", ".-.");
    morseMap.put("S", "...");
    morseMap.put("T", "-");
    morseMap.put("U", "..-");
    morseMap.put("V", "...-");
    morseMap.put("W", ".--");
    morseMap.put("X", "-..-");
    morseMap.put("Y", "-.--");
    morseMap.put("Z", "--..");
    morseMap.put("1", ".----");
    morseMap.put("2", "..---");
    morseMap.put("3", "...--");
    morseMap.put("4", "....-");
    morseMap.put("5", ".....");
    morseMap.put("6", "-....");
    morseMap.put("7", "--...");
    morseMap.put("8", "---..");
    morseMap.put("9", "----.");
    morseMap.put("0", "-----");


    String[] propFinala = prop.split(" ");


    for (String s : propFinala) {

        if (s.equals(morseMap.keySet())) {

        }
    }


}


}

2 个答案:

答案 0 :(得分:0)

您可以遍历字符并使用toUpperCase()获得大写变体。以此为键,您可以使用map[key]方法获取地图值。参见下面的代码

for (String s : propFinala) {
    String code = morseMap[s.toUpperCase()]
    //Do what you awant with your `code` variable below
}

答案 1 :(得分:0)

这将帮助您:

StringBuilder result = new StringBuilder();
for (char c : prop.toCharArray())
    if (morseMap.containsKey(("" + c).toUpperCase()))
        result.append(morseMap.get(("" + c).toUpperCase()));

此外,您还应在莫尔斯电码图中添加等于的空格(/):

morseMap.put(" ", "/");