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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张玉建 中级黑马   /  2013-8-10 05:35  /  5115 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张玉建 于 2013-8-14 15:27 编辑

//比较器
/*class mycompare implements Comparator
{
public  int compare(Object ob1,Object ob2)
{
  //向下转型
  stduent s1 = (stduent)ob1;
  stduent s2 = (stduent)ob2;
  int num= s1.getScore().compareTo(s2.getScore());
  if (num==0)
  {
   return s1.getName().compareTo(s2.getName());//次要条件比较。
  }
return num;
}
}*/
这是一个用在TreeSet集合比较器,学生要,姓名,年龄,分数,
学生类中已经实现接口Comparable强制让该类具有比较性  复写compareTo
学生类中的已经有排序方法是按年龄排,现在要扩展,最好定义比较器按分数排序
这个在编译时出现了!无法取消引用int,不解?求大神解释!
我试了一下!问题出在,两个int类型的引用都参与比较中来了,
那难道定义比较其实就不能!
                        主要条件:比分数,次要条件;比年龄,两个都是int类型的!
求大神解释

取消引用int.jpg (8.45 KB, 下载次数: 79)

取消引用int.jpg

评分

参与人数 1技术分 +1 收起 理由
以防万一 + 1 赞一个!

查看全部评分

8 个回复

倒序浏览
int num= s1.getScore().compareTo(s2.getScore());//compareTo(Object o1, Object o2)是用来比较两个对象的,你s1.getScore()得到的却是int类型的数,所以应该把int类型转换为Integer(或Long等,用Integer.parseInt(s1.getScore() )   转换)。
回复 使用道具 举报
需要进行基本数据类型的变量包装,既然你要得到分数这个int型的值,
那么就需要用字符串转成基本数据类型。即:
int num = (Integer.parseInt(s1.getScore()).compareTo.(Integer.parseInt(s2.getScore() );
回复 使用道具 举报
Int类型是基本数据类型  不是object的, 你拿一个比较object的方法来比较当然不行了
需要把Int类型的的数据封装成一个对象 Integer类型或者是Long类型
integer i = Integer.parseInt(s1.getScore();
integer i1 = Integer.parseInt(s2.getScore();
int num = (i.compareTo.(i1 );
这样应该就没错了
回复 使用道具 举报
亲,如问题已解决请将分类的未解决改为已解决。

以后的问题贴也要及时更改分类哦~


保持队形,谢谢合作
回复 使用道具 举报
杨璐敏 发表于 2013-8-13 22:16
亲,如问题已解决请将分类的未解决改为已解决。

以后的问题贴也要及时更改分类哦~

如何更改未解决改为已解决
谢谢

点评

详细步骤,请看公告的发帖规则  发表于 2013-8-14 15:20
回复 使用道具 举报
杨璐敏 发表于 2013-8-13 22:16
亲,如问题已解决请将分类的未解决改为已解决。

以后的问题贴也要及时更改分类哦~

此贴求给分!谢谢,版主好人

点评

以后要及时更改分类,及时更改的帖子分数会更多哦  发表于 2013-8-14 15:21
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马