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

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

   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");,之后就能正常运行了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

suwu150

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值