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);
    }
}

しかし、このプログラムでは、jdk 1.6 を使用しているため、.intValue() シンボルが見つからないというエラーが発生しています。オートボクシングとアンボクシングの機能が追加されているので、それが問題だと思います。カウントを計算したいので、解決策を教えてください。 .

4

3 に答える 3

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>();
。それ以外の場合、内部に保存されているものはすべて正当なものと見なされ、intValue メソッドはObjectありObjectません。したがって、エラーはコンパイラによってスローされます。

于 2013-06-13T17:52:25.587 に答える