如何在莫尔斯电码翻译器中迭代哈希图?
How to iterate hashmap in a morse code translator?
我有一个项目,我需要从用户那里获得输入,将其转换为摩尔斯电码,反之亦然。
我必须使用哈希图,我的代码如下所示。这不是真的工作。我无法理解如何在 class 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++;
}
我有一个项目,我需要从用户那里获得输入,将其转换为摩尔斯电码,反之亦然。
我必须使用哈希图,我的代码如下所示。这不是真的工作。我无法理解如何在 class 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++;
}