微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在莫尔斯电码转换器中迭代哈希图?

如何解决如何在莫尔斯电码转换器中迭代哈希图?

我有一个项目,我需要从用户那里获取输入,将其转换为摩尔斯电码,反之亦然。

我必须使用哈希图,我的代码看起来像这样。这不是真的有效。我无法理解如何在 engToMorse 类中打印我从用户那里获得的输入。

我也尝试查看其他类似问题,但找不到任何可以解决我的问题的问题。

编辑 1:通过将 .toLowerCase 更改为 .toupperCase,它确实有效,但仅适用于一个单词。我将如何使它适用于多个单词,例如一个句子。 Edit2:这是通过添加translator.put(' '," "); 修复的。我现在将如何将莫尔斯转换为英语?是同一个想法吗?

public static void main(String[]args){
    HashMap<Character,String> translations=new HashMap<Character,String>();
    translations.put('A',".-");
    translations.put('B',"-...");
    translations.put('C',"-.-.");
    translations.put('D',"-..");
    translations.put('E',".");
    translations.put('F',"..-.");
    translations.put('G',"--.");
    translations.put('H',"....");
    translations.put('I',"..");
    translations.put('J',".---");
    translations.put('K',"-.-");
    translations.put('L',".-..");
    translations.put('M',"--");
    translations.put('N',"-.");
    translations.put('O',"---");
    translations.put('P',".--.");
    translations.put('Q',"--.-");
    translations.put('R',".-.");
    translations.put('S',"...");
    translations.put('T',"-");
    translations.put('U',"..-");
    translations.put('V',"...-");
    translations.put('W',".--");
    translations.put('X',"-..-");
    translations.put('Y',"-.--");
    translations.put('Z',"--..");
    translations.put('0',"-----");
    translations.put('1',".----");
    translations.put('2',"..---");
    translations.put('3',"...--");
    translations.put('4',"....-");
    translations.put('5',".....");
    translations.put('6',"-....");
    translations.put('7',"--...");
    translations.put('8',"---..");
    translations.put('9',"----.");
    translations.put(' ',"   ");
    Scanner scan=new Scanner(system.in);
    System.out.println("Welcome to the translator. Type 1 for English to Morse or type 2 for Morse to English: ");
    int choice=scan.nextInt();
    if(choice==1)
       engToMorse(translations);
    else if(choice==2)
        morsetoEng(translations);
    else{
        System.out.println("Invalid Input!");
    }
  
}
public static void engToMorse(HashMap<Character,String> translations){
    
    Scanner scan=new Scanner(system.in);
    System.out.println("Please enter the sentence that you want to translate to Morse here: ");
    String sentence=scan.nextLine().toupperCase();
    int i=0;
    while(i<sentence.length()){
        System.out.printf(translations.get(sentence.charat(i)));
        i++;
    }
    

解决方法

您的哈希映射翻译的键是大写,并且您将“句子”中的所有字符都转换为小写。 拿到hashmap中的元素时改回大写是最简单的方法。

while(i<sentence.length()){
    System.out.println(translations.get(Character.toUpperCase(sentence.charAt(i))));
    i++;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。