Java 尝试使用HashMap将字母与数字关联
我正在尝试使用Hashmap制作一个包含26个键值对的字典。我试图将字母表中的每个字母链接到一个数字,然后遍历一个字符串,然后逐字母打印HashMap中的字母值 这就是我所尝试的:Java 尝试使用HashMap将字母与数字关联,java,Java,我正在尝试使用Hashmap制作一个包含26个键值对的字典。我试图将字母表中的每个字母链接到一个数字,然后遍历一个字符串,然后逐字母打印HashMap中的字母值 这就是我所尝试的: import java.util.*; public class HashDemo { public static void main(String[] args) { HashMap hm = new HashMap(); hm.put("a", 2); hm.put("b", 3
import java.util.*;
public class HashDemo {
public static void main(String[] args) {
HashMap hm = new HashMap();
hm.put("a", 2);
hm.put("b", 3);
hm.put("c", 5);
hm.put("d", 7);
hm.put("e", 11);
String word = new String("bed");
char arr[] = word.toCharArray();
for(char c: word) {
System.out.println(hm.get(c));
}
}
}
我编译时的输出是:
Note: HashMapDemo.java uses unchecked or unsafe op
Note: Recompile with -Xlint:unchecked for details.
1 error
无论如何运行时,我的输出为:
Null
我不明白为什么它在hashmap中找不到这个字母。是因为hashmap键是字符串而不是字符吗?如果是,我仍然不确定该做什么。您应该通过字符串而不是从字符获取值。因为映射包含字符串。c是字符。通过使用字符串连接
c+“”
您可以将其更改为字符串。而且字符c:word
不正确,应该是字符c:arr
,因为word不是数组,它只是字符串。您可以使用字符串.valueOf(c)代码>也用于将字符转换为字符串
改变
hm.get(c)
到
或
或
您应该通过字符串而不是从char获取值。因为map包含字符串。c是一个字符。通过与字符串连接,您可以将其更改为String。而且char c:word
不正确,它应该是char c:arr
,因为word不是数组,它只是一个字符串。您可以使用String.valueOf(c)代码>也用于将字符转换为字符串
改变
hm.get(c)
到
或
或
你应该重复输入输出单词。map的关键是Java对象。
试试这个
publicstaticvoidmain(字符串[]args){
Map hm=新的HashMap();
hm.put(“a”,2);
hm.put(“b”,3);
hm.put(“c”,5);
hm.put(“d”,7);
hm.put(“e”,11);
字符串字=新字符串(“床”);
char arr[]=word.toCharArray();
用于(字符c:arr){
System.out.println(hm.get(String.valueOf(c));
}
}
您应该迭代输入输出word。map的关键是Java对象。
试试这个
publicstaticvoidmain(字符串[]args){
Map hm=新的HashMap();
hm.put(“a”,2);
hm.put(“b”,3);
hm.put(“c”,5);
hm.put(“d”,7);
hm.put(“e”,11);
字符串字=新字符串(“床”);
char arr[]=word.toCharArray();
用于(字符c:arr){
System.out.println(hm.get(String.valueOf(c));
}
}
这里的问题是,您的HashMap
包含字符串
键,但您试图从中获取字符
您也可以通过将关键点设置为字符来修复它:
Map<Character, Integer> hm = new HashMap<Character, Integer>();
hm.put('a', 2);
hm.put('b', 3); // Note the single quotes !
hm.put('c', 5);
hm.put('d', 7);
hm.put('e', 11);
String word = "bed";
for(char c: word.toCharArray()) {
System.out.println(hm.get(c));
}
Map hm=newhashmap();
hm.put('a',2);
hm.put('b',3);//注意单引号!
hm.put('c',5);
hm.put('d',7);
hm.put('e',11);
字符串word=“bed”;
for(char c:word.toCharArray()){
系统输出println(hm.get(c));
}
还要注意,我键入了HashMap
。强烈建议您这样做,如果您不这样做,编译器甚至会发出警告。然而,不幸的是,在这种情况下,改进的类型检查不会捕捉到您的错误(您仍然可以使用任何东西调用get
,而不仅仅是键类型) 这里的问题是您的HashMap
包含String
键,但您试图从中获取字符
您也可以通过将关键点设置为字符来修复它:
Map<Character, Integer> hm = new HashMap<Character, Integer>();
hm.put('a', 2);
hm.put('b', 3); // Note the single quotes !
hm.put('c', 5);
hm.put('d', 7);
hm.put('e', 11);
String word = "bed";
for(char c: word.toCharArray()) {
System.out.println(hm.get(c));
}
Map hm=newhashmap();
hm.put('a',2);
hm.put('b',3);//注意单引号!
hm.put('c',5);
hm.put('d',7);
hm.put('e',11);
字符串word=“bed”;
for(char c:word.toCharArray()){
系统输出println(hm.get(c));
}
还要注意,我键入了HashMap
。强烈建议您这样做,如果您不这样做,编译器甚至会发出警告。然而,不幸的是,在这种情况下,改进的类型检查不会捕捉到您的错误(您仍然可以使用任何东西调用get
,而不仅仅是键类型) 这会解决它的。但是没有+1,因为a)HashMap上缺少泛型类型,b)使用字符串构造函数,c)c+“”
而不是String.valueOf()
;-)@但是我声明了很多方法来将char转换为String,是的,我将main转换为Character.toString(c);这会解决它的。但是没有+1,因为a)HashMap上缺少泛型类型,b)使用字符串构造函数,c)c+“”
而不是String.valueOf()
;-)@但是我声明了很多方法来将char转换为String,是的,我将main转换为Character.toString(c)+1.根据你的常识回答。很抱歉编辑你的帖子:)非常感谢。你知道我如何把字母值相加而不是打印它们吗?@fastsnail:谢谢,修复了。@user3591815:你可以有一个int
变量,从0开始,然后对循环中的每个字母进行累加。+1作为你的常识答案。很抱歉编辑你的帖子:)非常感谢。您知道如何将字母值相加而不是打印它们吗?@fastsnail:谢谢,修复了。@user3591815:您可以有一个int
变量,从0
开始,然后对循环中的每个字母进行累加。
HashMap hm = new HashMap();
hm.put("a", 2);
hm.put("b", 3);
hm.put("c", 5);
hm.put("d", 7);
hm.put("e", 11);
String word = new String("bed");
char arr[] = word.toCharArray();
for(char c: arr) {
System.out.println(hm.get(String.valueOf(c)));
}
public static void main(String[] args) {
Map<String, Integer> hm = new HashMap<String, Integer>();
hm.put("a", 2);
hm.put("b", 3);
hm.put("c", 5);
hm.put("d", 7);
hm.put("e", 11);
String word = new String("bed");
char arr[] = word.toCharArray();
for (char c : arr) {
System.out.println(hm.get(String.valueOf(c)));
}
}
Map<Character, Integer> hm = new HashMap<Character, Integer>();
hm.put('a', 2);
hm.put('b', 3); // Note the single quotes !
hm.put('c', 5);
hm.put('d', 7);
hm.put('e', 11);
String word = "bed";
for(char c: word.toCharArray()) {
System.out.println(hm.get(c));
}