程序如下:import java.util.*;
class Person
{
private int javascore;
private String name;
Person(int j,String n)
{
this.javascore=j;
this.name=n;
}
public String toString()
{
return javascore+" "+name;
}
}class Test
{
public static void main(String[] args)
{
Person p1=new Person(40,"Feng");
Person p2=new Person(90,"kaili");
Person p3=new Person(30,"zhanglian");
Person p4=new Person(80,"jay");
TreeSet ts=new TreeSet();
ts.add(p1);
ts.add(p2);
ts.add(p3);
ts.add(p4);
System.out.println(ts);
System.out.println();
}
}问题:当我按如上代码运行时,出现如下错误:D:\study\java\java\Treeset1>javac *.javaD:\study\java\java\Treeset1>java Test
Exception in thread "main" java.lang.ClassCastException
at java.util.TreeMap.compare(TreeMap.java:1085)
at java.util.TreeMap.put(TreeMap.java:463)
at java.util.TreeSet.add(TreeSet.java:209)
at Test.main(Treeset1.java:33)D:\study\java\java\Treeset1>但当我把ts.add(p2);
ts.add(p3);
ts.add(p4);都注释掉后,则程序能够运行!输出如下结果:
D:\study\java\java\Treeset1>javac *.javaD:\study\java\java\Treeset1>java Test
[40 Feng]D:\study\java\java\Treeset1>为什么会出现这样的结果?顺便问一句,若实现按javascore成绩的升序排列,如何把 javascore的成绩提取出来进行比较?(本人菜鸟,java刚入门,望高手指教!)
class Person
{
private int javascore;
private String name;
Person(int j,String n)
{
this.javascore=j;
this.name=n;
}
public String toString()
{
return javascore+" "+name;
}
}class Test
{
public static void main(String[] args)
{
Person p1=new Person(40,"Feng");
Person p2=new Person(90,"kaili");
Person p3=new Person(30,"zhanglian");
Person p4=new Person(80,"jay");
TreeSet ts=new TreeSet();
ts.add(p1);
ts.add(p2);
ts.add(p3);
ts.add(p4);
System.out.println(ts);
System.out.println();
}
}问题:当我按如上代码运行时,出现如下错误:D:\study\java\java\Treeset1>javac *.javaD:\study\java\java\Treeset1>java Test
Exception in thread "main" java.lang.ClassCastException
at java.util.TreeMap.compare(TreeMap.java:1085)
at java.util.TreeMap.put(TreeMap.java:463)
at java.util.TreeSet.add(TreeSet.java:209)
at Test.main(Treeset1.java:33)D:\study\java\java\Treeset1>但当我把ts.add(p2);
ts.add(p3);
ts.add(p4);都注释掉后,则程序能够运行!输出如下结果:
D:\study\java\java\Treeset1>javac *.javaD:\study\java\java\Treeset1>java Test
[40 Feng]D:\study\java\java\Treeset1>为什么会出现这样的结果?顺便问一句,若实现按javascore成绩的升序排列,如何把 javascore的成绩提取出来进行比较?(本人菜鸟,java刚入门,望高手指教!)
解决方案 »
- GregorianCalendar类的问题,可能是继承的问题。
- java每月月底定时执行指定任务
- TimerTask中scheduleAtFixedRate的使用问题
- 请教下session.getServletContext()和getServletContext()问题?
- java时间计算问题
- Vector引用的类如何回收
- 请教一个socket的问题 ,太奇怪了,请大家帮忙看看。问题解决就给分,在线等
- 深圳某公司招java程序员
- *.jar文件用来做什么,能直接运行吗?
- 有没有方法使含有JAVA APPLET的网页下载到客户端后,可以脱离网页独立运行!
- hashtable如何排序
- RandomAccessFile建立G级别大小的文件如此神速!!!
上述附加问题是把输出结果按javascore的成绩升序排列,其中姓名也输出!
SDK版本:j2sdk1.4.2_13 程序在DOS控制台下运行!
class Person implements java.lang.Comparable
{
private int javascore;
private String name; Person(int j,String n)
{
this.javascore=j;
this.name=n; } public String toString()
{
return javascore+" "+name;
} public int compareTo(Object obj) {
if (obj instanceof Person) {
Person std = (Person) obj;
if (this.name == std.name)
return 0;
if (this.javascore > std.javascore)
return 1;
}
return -1;
}
} public class Test
{
public static void main(String[] args)
{
Person p1=new Person(40,"Feng");
Person p2=new Person(90,"kaili");
Person p3=new Person(30,"zhanglian");
Person p4=new Person(80,"jay"); TreeSet ts=new TreeSet();
ts.add(p1);
ts.add(p2);
ts.add(p3);
ts.add(p4);System.out.println(ts);
System.out.println();
}
}