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

无法将莫尔斯翻译成英文

如何解决无法将莫尔斯翻译成英文

我有一个学校项目,我需要将莫尔斯翻译成英语。我是 Java 的新手,所以我想知道您是否可以帮助我。问题是我不确定应该在 while 循环中放置什么来将莫尔斯电码转换为英语。任何帮助,将不胜感激。谢谢^^

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(' ',"   ");
    
    HashMap<String,Character> reversedHashMap = new HashMap<String,Character>();
    for (char key : translations.keySet()){
        reversedHashMap.put(translations.get(key),key);
    }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(reversedHashMap);
    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++;
    }
    
    }
    public static void morsetoEng(HashMap<String,Character> reversedHashMap){
    
    Scanner scan=new Scanner(system.in);
    System.out.println("Please enter the morse code that you want to translate to english: ");
    String morse=scan.nextLine().toupperCase();
    int i=0;
    while(i<morse.length()){
        System.out.print();
        i++;
    }
   
    } 

解决方法

阅读输入后,按空格分割输入字符串。对于每个元素,查找莫尔斯电码(键)到字符(值)映射并打印值。

    for (String singleCode : morse.split(" ")) {
        System.out.print(reversedHashMap.get(singleCode));
    }

样本输入输出

Welcome to the translator. Type 1 for English to Morse or type 2 for Morse to English: 
2
Please enter the morse code that you want to translate to english: 
... -- ...
SMS
,

你可以简单地一一获取莫尔斯电码,每行获取一个莫尔斯电码,处理它并连接到结果字符串,如果你想在一行中获取多个莫尔斯电码,在它们之间使用分隔符然后拆分基于该拆分器的字符串,例如#。

所以你会得到--#.--#..-- 然后将其拆分为:

for (String singleMorse : morse.split("#")) {
        System.out.print(reversedHashMap.get(singleCode));
    }

注意:因为您的莫尔斯电码中有SPACE,所以使用除SPACE

以外的分隔符更简单

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