我收到此错误,我不知道为什么。
这是我的代码:
char a[]=str.toCharArray();
HashMap <Character,Integer> hm=new HashMap<Character,Integer>();
for(int i=0;i<a.length;i++){
if(hm.containsKey(a[i])){
hm.put(a[i], hm.get(a[i])+1);
}
}
答案 0 :(得分:-1)
代码符合并正确执行(我刚刚为缺少的字符添加了初始化hm.put(a[i], 1);
)。
char a[]=str.toCharArray();
HashMap<Character,Integer> hm=new HashMap<Character,Integer>();
for(int i=0;i<a.length;i++){
if(hm.containsKey(a[i])){
hm.put(a[i], hm.get(a[i])+1);
}else{
hm.put(a[i], 1);
}
}
严格地说编译器是正确的,因为char
不是Character
而int
不是Integer
,但是自动装箱应该处理这个问题。
所以我们错过了一些背景。
我可以重现同样错误的唯一方法是在测试类中添加一个模拟Character类,如下所示:
public class OneTest {
private class Character{
}
@Test
public void test() {
String str = "AABcDD";
char a[]=str.toCharArray();
HashMap<Character,Integer> hm=new HashMap<Character,Integer>();
for(int i=0;i<a.length;i++){
if(hm.containsKey(a[i])){
hm.put(a[i], hm.get(a[i])+1);
}else{
hm.put(a[i], 1);
}
}
System.out.println(hm);
}
}