int count = ((Integer)hm.get(cha[i])).intValue() + 1; 
int count1 = ((Integer)hm1.get(cha[i+1])).intValue() + 1;
抛出public ClassCastException(String s)这个异常,我用的是HasnMap,想获得键值,并且+1,导出int型,却抛出这个异常,不知道如何修改.是不是HasnMap有什么特殊要求么?

解决方案 »

  1.   

    hm.get(cha[i])获得的值是非Integer类型或者NULL类型,你自己DEBUG以下就知道了,要不你把代码全部贴,我们才知道什么原因,给的信息太少了.
      

  2.   

    你这里的cha是什么类型的数组?
      

  3.   

    很明显检出来的不是Integer类型啊
    楼主再看看代码,看放入的时候是什么类型的
      

  4.   

    int count = Integer.parseInt(hm.get(cha[i])) + 1;
      

  5.   

    public static void main(String[] args) {
    HashMap hs = new HashMap();
    hs.put("1","1");
    hs.put("2",new Integer(2));
    int count1 = Integer.parseInt((String)hs.get("1"))+1;
    System.out.println("count1:"+count1);
    }
      

  6.   

    int count = Integer.parseInt((String)hm.get(cha[i])) + 1;
      

  7.   

    错了,不是Object类型?也就是基本类型?
      

  8.   

    取出数据的时候必须和存入数据是相同类型
    如果你存入的时候是String,那么取出的时候也是String
    要用int的话,必须用Integer.parseInt()来转还有从JDK1.5开始,HASHMAP支持模板定义法的,这样可以更好的限定类型
    HashMap<String,int> map = new HashMap<String,int>();这样写的话,编译器会检查存取类型,防止错误的类型转换
      

  9.   

    jdk1.5不需要转,直接可以把int放入map
      

  10.   

    to 樓主:
      類型不匹配
      cha[i]是Integer?