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

时间:2018-02-22 05:59:22

标签: java input hashmap java.util.scanner morse-code

我正在尝试创建一个Java程序,它接受用户字符串输入并将其转换为莫尔斯代码。我试图将字母表中的每个字母存储在一个hashMap中,其中包含相应的莫尔斯密码&我的目标是当从输入中读取密钥(常规字母)时能够获得值(莫尔斯码)。我尝试了下面的东西,但是当我测试它时它一直打印为空。我对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);        


}
}

2 个答案:

答案 0 :(得分:0)

正如我在最初的评论中所说,不要使用原始类型。您的from django.http import HttpResponseRedirect def homepage_view(request): if request.user.is_authenticated: return HttpResponseRedirect('/some/redirect/url/') ... 可能属于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();

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

答案 1 :(得分:0)

您的代码打印为空,因为此行String val = (String)morsecode.get(sc.nextline());正在根据您的注释检索字符串“ab”的字符串值。根据您如何向HashMap添加条目,您不添加“ab”,而是添加单个字母“a”和“b”;你在向HashMap询问你从未给过的东西。下面,我为我认为你要做的事情添加了一个翻译步骤。靠近末尾的小块将拉出你给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();
    }
}