A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 盛亚昆 中级黑马   /  2012-3-19 15:48  /  2417 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.*;
class Student
{
        private String name;
        private int age;
        private double fen;
        Student (String name,int age,double fen)
                {
                this.name=name;this.age=age;this.fen=fen;
                wrint();
               
                }
                public void setName(String name)
                {
                        this.name=name;
                }
                public void setAge(int age)
                {
                        this.age=age;
                }
            public void setFen(double fen)
                {
                        this.fen=fen;
                }
                public String getName()
                {
                        return name;
                }
                public  int getAge()
                {
                        return age;
                }
                public double getFen()
                {
                return fen;
                }
       
                public void wrint()
                {
                        //System.out.println("name="+this.name+", age="+this.age+", fen="+this.fen);
                }
}

class Student1
{
        public static void main(String[] args)
        {
                TreeSet ts=new TreeSet(new MyCompare());

                ts.add(new Student("wangwu",20,78));
                ts.add(new Student("zhangsan",20,98));
                ts.add(new Student("lisi",20,80));
                ts.add(new Student("zhaoliu",20,60));
                ts.add(new Student("zhuqi",20,65 ));

                Iterator it=ts.iterator();

                while (it.hasNext())
                {
                        Student stu=(Student)it.next();
                        System.out.println(stu.getName()+" ... "+stu.getAge()+"..."+stu.getFen());
                }

        }
}
class  MyCompare implements Comparator
{
        public int compare(Object o1,Object o2)
        {
                Student s1=(Student)o1;
                Student s2=(Student)o2;       

                int= s1.getFen().compareTo(s2.getFen());//这里不是返回1.0.-1.的吗怎么double类型的不行了呢
                if (num==0)
                {
                        if (s1.getAge()>s2.getAge())
                        return 1;
                        if (s1.getAge()==s2.getAge())
                        return 0;

                return -1;
                }
                return num;
        }
}
代码出现错误,求指点
Noname1.java:73: 无法取消引用 double
                return s1.getFen().compareTo(s2.getFen());
                                  ^
注意:Noname1.java 使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
1 错误

4 个回复

倒序浏览
本帖最后由 段浩亮 于 2012-3-19 16:06 编辑

int= s1.getFen().compareTo(s2.getFen());//这里不是返回1.0.-1.的吗怎么double类型的不行了呢
你少写变量名了,int num = ......
还有double型的变量不能用compareTo比较,要转成Double   
Student没有实现Comparable接口,不能往TreeSet里添加
把这三个地方改完就行了
回复 使用道具 举报
********int= s1.getFen().compareTo(s2.getFen());//这里不是返回1.0.-1.的吗怎么double类型的不行了呢********
s1.getFen()得到的是基本数据类型,只有类类型或具体对象能调用方法,所以要先封装成对象;另外  你少些了一个变量num;
改成这样就可以了: int num = new Double(s1.getFen()).compareTo(new Double(s2.getFen()));
回复 使用道具 举报
********int= s1.getFen().compareTo(s2.getFen());//这里不是返回1.0.-1.的吗怎么double类型的不行了呢********
s1.getFen()得到的是基本数据类型,只有类类型或具体对象能调用方法,所以要先封装成对象;另外  你少些了一个变量num;
改成这样就可以了: int num = new Double(s1.getFen()).compareTo(new Double(s2.getFen()));
回复 使用道具 举报
谢谢  要进行double类型数字比较就要把它封装成double对象,才实现了Comparator  明白了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马