黑马程序员技术交流社区

标题: 无法取消引用int [打印本页]

作者: 张玉建    时间: 2013-8-10 05:35
标题: 无法取消引用int
本帖最后由 张玉建 于 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, 下载次数: 86)

取消引用int.jpg

作者: gudao20080    时间: 2013-8-10 06:39
int num= s1.getScore().compareTo(s2.getScore());//compareTo(Object o1, Object o2)是用来比较两个对象的,你s1.getScore()得到的却是int类型的数,所以应该把int类型转换为Integer(或Long等,用Integer.parseInt(s1.getScore() )   转换)。
作者: breaveheart    时间: 2013-8-10 09:30
需要进行基本数据类型的变量包装,既然你要得到分数这个int型的值,
那么就需要用字符串转成基本数据类型。即:
int num = (Integer.parseInt(s1.getScore()).compareTo.(Integer.parseInt(s2.getScore() );
作者: 茶念小手    时间: 2013-8-10 10:27
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 14:32
杨璐敏 发表于 2013-8-13 22:16
亲,如问题已解决请将分类的未解决改为已解决。

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

如何更改未解决改为已解决
谢谢
作者: 张玉建    时间: 2013-8-14 14:36
杨璐敏 发表于 2013-8-13 22:16
亲,如问题已解决请将分类的未解决改为已解决。

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

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2