0
I have made a programme to count the number of words using HashMap.Here it is-:


import java.util.*;
class Count{
    public static void main(String args[]){
        Scanner s=new Scanner(System.in);
        String in=s.nextLine();
        HashMap hm=new HashMap();
        String sh[]=in.split(" ");
        for(int i=0;i<sh.length;i++){
            String key=sh[i];
            if(sh[i].length() > 1){
                if(hm .get(key)==null){
                    hm.put(key,i);
                }
                else{
                    int value=new Integer(hm.get(key).intValue());
                    value++;
                    hm.put(key,value);
                }
            }
        }
        System.out.println(hm);
    }
}

But in this programme I am getting error that .intValue() symbol not found as I am using jdk 1.6 a feature of autoboxing and unboxing is added so I guess that is the problem.I want to calculate the count so Please give me the solution.

4

3 回答 3

2

您应该编写此代码。

int value=new Integer((Integer)hm.get(key)).intValue();

或更好

int value = (Integer)hm.get(key);
于 2013-06-13T15:39:37.303 回答
1

参数化你的地图:使用HashMap<String, Integer>而不是HashMap

HashMap<String, Integer> hm = new HashMap<String, Integer>();

这样您就不需要将地图值转换为 int。它会自动“转换”:

int value= hm.get(key);
value++;
hm.put(key,value);

此外,通常您不会将变量声明为具体实现HashMap,而是使用通用Map接口:

Map<String, Integer> hm = new HashMap<String, Integer>();
于 2013-06-13T15:41:38.113 回答
0

所以你有一个HashMap没有指定里面存储什么类型的对象。
要指定存储在其中的内容,您需要使用泛型。
将 hashmap 定义为HashMap<String,Integer> hm = new HashMap<String,Integer>();
否则,存储在其中的所有内容都将被视为 justObject并且Object没有 intValue 方法。所以错误是由编译器抛出的。

于 2013-06-13T17:52:25.587 回答