Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lan

来源:互联网 发布:证件照蓝底渐变软件 编辑:程序博客网 时间:2024/06/07 08:38

问题描述:编写以下程序时,能够正常编译,但运行时报异常

   package sample;   import java.util.*;   public class SetTest   {           public static void print(Set s1)           {                   Iterator iter=s1.iterator();                   while(iter.hasNext())                   {                   System.out.print(iter.next()+"  ");                  }                                                                                                                                              System.out.println();          }          public static void main(String[] args)          {                                  System.out.println("------------------------------");                  Set s2=new TreeSet();                  System.out.println("s2的大小:"+s2.size());                  s2.add("ads");                  s2.add("Hello world");                  s2.add(123);                  System.out.println("s2的大小:"+s2.size());                  print(s2);          }  }


运行时异常提示:

Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer

    at java.lang.Integer.compareTo(Integer.java:52)
    at java.util.TreeMap.put(TreeMap.java:568)
    at java.util.TreeSet.add(TreeSet.java:255)
    at sample.SetTest.main(SetTest.java:33)

原因:String cannot be cast to java.lang.Integer,String类型数据不能转到Integer类型,这是因为程序中的TreeSet中添加数据时要求进行对数据排序,而进行比较时只能在统一的类型下面比较,所以Integer 类型的和String类型的就会不能比较,所以报异常

解决方法:将add()函数中的内容全部修改为字符串类型,即add("123");,之后就能正常运行了

1 0