我正在尝试创建一个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);
}
}
答案 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();
}
}