如何解决如何在莫尔斯电码转换器中迭代哈希图?
我有一个项目,我需要从用户那里获取输入,将其转换为摩尔斯电码,反之亦然。
我必须使用哈希图,我的代码看起来像这样。这不是真的有效。我无法理解如何在 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 举报,一经查实,本站将立刻删除。