您的位置:首页 > 编程语言 > Java开发

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

2016-08-14 08:07 836 查看
问题描述:编写以下程序时,能够正常编译,但运行时报异常

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");,之后就能正常运行了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐