本帖最后由 遮天 于 2014-4-7 09:52 编辑
这是我基础测试题中的一道题目:声明类Student,包含3个成员变量:name、age、score,创建5个对象装入TreeSet, 按照成绩排序输出结果(考虑成绩相同的问题)。
下面是我做的答案- /**
- * 第10题:声明类Student,包含3个成员变量:name、age、score,创建5个对象装入TreeSet,
- * 按照成绩排序输出结果(考虑成绩相同的问题)。
- *
- *
- *
- *
- *
- *
- * */
- import java.util.*;
- public class Test10
- {
- public static void main(String[] args)
- {
- TreeSet<Student> ts=new TreeSet<Student>();
- ts.add(new Student("程序员06",23,89.2));
- ts.add(new Student("程序员10",45,96.0));
- ts.add(new Student("程序员08",32,98.5));
- ts.add(new Student("程序员02",34,96.0)); //成绩相同
- ts.add(new Student("程序员05",14,95.5));
- Iterator<Student> it=ts.iterator();
- while(it.hasNext())
- {
- Student stu=(Student)it.next();
- System.out.println(stu.getName()+"******"+stu.getAge()+"******"+stu.getscore());
- }
- }
- }
- class Student implements Comparable //该接口强制让学生具备比较性
- <Object>
- {
- private String name;
- private int age;
- private double score;
- Student(String name,int age,double score)
- {
- this.name=name;
- this.age=age;
- this.score=score;
- }
- public int compareTo(Object obj)
- {
- if(!(obj instanceof Student))
- throw new RuntimeException("不是学生类型");
- Student s=(Student)obj;
- if(this.score<s.score)
- return 1;
- if(this.score==s.score)
- {
- //成绩相同时比较姓名
- return this.age.compareTo(s.age);
- }
- return -1;
- }
- public String getName()
- {
- return name;
- }
- public int getAge()
- {
- return age;
- }
- public double getscore()
- {
- return score;
- }
- }
复制代码
本来是想要在出现成绩相同的情况下,比较年龄
- if(this.score==s.score)
- {
- //成绩相同时比较年龄
- return this.age.compareTo(s.age);
- }
复制代码
结果提示就报错了,那么代码如何写能比较年龄呢?为什么?
|
-
cw.jpg
(32.55 KB, 下载次数: 33)
成绩相同时比较年龄的错误提示
|