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

    xiaoxiao2025-02-16  8

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

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

    转载请注明原文地址: https://ju.6miu.com/read-1296500.html
    最新回复(0)