程序如下: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刚入门,望高手指教!)
解决方案 »
- 利用Eclipse3.5调试程序,为什么会陷入到JDK自带的函数中停顿,而无法到达我设置的断点?
- 通过FileInputStream读文件,然后用FileOutputStream写到文件里面,中文字符为什么不是乱码?
- 关于范型....
- 三元运算符问题
- java的Integer中 parseInt(String s, int radix) 方法如何使用!!!!
- 怎么关闭网页?
- 中文 win2000 控制面板->区域设置中一切正常,为何 java 得到的属性 file.encoding 不对?诸位碰到过这种情况吗?
- c++与java 有什么区别?
- 有谁知道如何用jre 1.3?
- 请问jacob操作word表格,如何删除表格指定的行
- 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();
}
}