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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qmayuan 中级黑马   /  2013-8-3 19:49  /  1872 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Student implements Comparable<Student>
类实现了Comparable 接口   就要重写 compareTo方法
public int compareTo(Student s)
        {
                int num = Integer.parseInt(this.sum).compareTo(Integer.parseInt(s.sum));
                //int num =new Integer(this.sum).compareTo(new Integer(s.sum));
                if(num==0)
                        return this.name.compareTo(s.name);
                return num;

        }

重写的时候需要比较两个double类型的数据,但是compareTo只能比较Interger类型的数据 ,我要怎么改?求高手指导下~!

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 神马都是浮云

查看全部评分

6 个回复

倒序浏览
什么类型都可以比较。直接改为Double.valueOf(str)
回复 使用道具 举报
支持这些引用类型的直接比较。改为Double就行。           
回复 使用道具 举报
本帖最后由 天地有我 于 2013-8-4 13:13 编辑

你的意思是传入如果sum(sum为String类型)相等,就以姓名来比较,如果不等,就以sum来比较。
回复 使用道具 举报
本帖最后由 天地有我 于 2013-8-4 13:52 编辑

Double类也提供了一个compareTo方法
public int compareTo(Student s)
        {                     
                if( Double.parseDouble(this.sum).compareTo(Double.parseDouble(s.sum))  == 0)
                {
                        return this.name.compareTo(s.name);
                }
               
              return Double.parseDouble(this.sum).compareTo(Double.parseDouble(s.sum));
        }





回复 使用道具 举报
自定义的比较器覆盖原来的比较方法,你使用 Double.parseDouble 就能够进行比较了
回复 使用道具 举报
把double转型为int 就OK了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马