根据用户输入 / Morse代码生成器从Hashmap获取值



我正在尝试创建一个Java程序,该程序将用户字符串输入并将其转换为Morse代码。我试图将字母的每个字母存储在哈希图中,并使用其相应的Morse Code&我的目标是在从输入中读取密钥(常规字母(时能够获得值(Morse代码(。我尝试了下面的一些东西,但在我测试时它会不断打印空。我是Java的新手,似乎无法弄清楚如何做到这一点。

import java.util.HashMap;
import java.util.Scanner;
public class Alphabet{
public static void main(String args[]) {
    Scanner sc = new Scanner(System.in);
    HashMap morsecode = new HashMap();
    morsecode.put("a",",-");
    morsecode.put("b","-...");
    //will add other letters later
    System.out.println("please enter an english sentence:");
    String val = (String)morsecode.get(sc.nextLine());
    System.out.println(val);        

}
}

正如我在最初的评论中所说的那样,不要使用原始类型。在这里,您的Map可能应为Character, String,因为这就是为什么您当前无法在Map中的单个字符中映射多个字符的原因。基本上,我会做

之类的事情
Scanner sc = new Scanner(System.in);
Map<Character, String> morsecode = new HashMap<>();
morsecode.put('a', ",-");
morsecode.put('b', "-...");
// will add other letters later
System.out.println("please enter an english sentence:");
String line = sc.nextLine();
for (char ch : line.toLowerCase().toCharArray()) {
    System.out.print(morsecode.get(ch) + " ");
}
System.out.println();

但是您可以也做

Scanner sc = new Scanner(System.in);
Map<String, String> morsecode = new HashMap<>();
morsecode.put("a", ",-");
morsecode.put("b", "-...");
// will add other letters later
System.out.println("please enter an english sentence:");
String line = sc.nextLine();
for (char ch : line.toLowerCase().toCharArray()) {
    System.out.print(morsecode.get(Character.toString(ch)) + " ");
}
System.out.println();

或从用户输入中迭代单个字符的任何其他方法。

您的代码正在打印null,因为此行String val = (String)morsecode.get(sc.nextline());正在根据您的评论检索字符串" AB"的字符串值。根据如何在hashmap中添加条目,不要添加" ab",而是添加单个字母" a"one_answers" b";您正在向哈希图询问您从未给过的东西。下面,我为您认为您想做的事情添加了翻译步骤。末端附近的小块将拉动您给出的hashmap的每个翻译,并为您给该程序的英文句子中的每个字母构建一个新的字符串。

import java.util.HashMap;
import java.util.Scanner;
public class Alphabet
{
    public static void main(String args[])
    {   
        Scanner sc = new Scanner(System.in);
        HashMap<String, String> morsecode = new HashMap<>();
        morsecode.put("a",",-");
        morsecode.put("b","-...");
        //will add other letters later
        System.out.println("please enter an english sentence:");
        String input = sc.nextLine();
        // Translate each letter from English -> code
        final StringBuilder builder = new StringBuilder();
        for (final char letter : input.toCharArray()) {
            builder.append(morsecode.get(Character.toString(letter)));
        }
        System.out.println(builder.toString());
        sc.close();
    }
}

最新更新