Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试使用HashMap将字母与数字关联_Java - Fatal编程技术网

Java 尝试使用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

我正在尝试使用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);
    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));
}