黑马程序员技术交流社区

标题: [已解决]在学习TreeSet实现Comparator方式排序时出现的错误 [打印本页]

作者: 王超    时间: 2012-6-12 21:50
标题: [已解决]在学习TreeSet实现Comparator方式排序时出现的错误
本帖最后由 王超 于 2012-6-12 23:17 编辑
  1. import java.util.*;
  2. class TreeSetDemo_2
  3. {
  4. public static void main(String[] args)
  5. {
  6. TreeSet ts = new TreeSet(new MyCompare());

  7. ts.add(new Student("lisi02",22));
  8. ts.add(new Student("lisi022",20));
  9. ts.add(new Student("lisi01",19));
  10. ts.add(new Student("lisi03",24));
  11. ts.add(new Student("lisi02",24));

  12. Iterator it = ts.iterator();
  13. while(it.hasNext())
  14. {
  15. Student stu = (Student)it.next();
  16. System.out.println(stu.getName()+"....."+stu.getAge());
  17. }
  18. }

  19. class MyCompare implements Comparator
  20. {
  21. public int compare(Object o1,Object o2)
  22. {
  23. Student s1 = (Student)o1;
  24. Student s2 = (Student)o2;

  25. return s1.getName().compareTo(s2.getName());
  26. }
  27. }

  28. class Student implements Comparable //该接口强制让学生具有比较性
  29. {
  30. private String name;
  31. private int age;

  32. Student(String name, int age)
  33. {
  34. this.name = name;
  35. this.age = age;
  36. }
  37. public String getName()
  38. {
  39. return name;
  40. }
  41. public int getAge()
  42. {
  43. return age;
  44. }

  45. public int compareTo(Object obj)
  46. {
  47. //return 1;

  48. if(!(obj instanceof Student))
  49. throw new RuntimeException("不是学生对象");
  50. Student s = (Student)obj;

  51. System.out.println(this.name+"...compareTo..."+s.name);
  52. if(this.age>s.age)
  53. return 1;
  54. if(this.age==s.age)
  55. {
  56. //return 0;
  57. return this.name.compareTo(s.name);
  58. }
  59. return -1;

  60. }
  61. }
复制代码
错误是:
TreeSetDemo_2.java:77: 进行语法解析时已到达文件结尾



作者: 付信榕    时间: 2012-6-12 22:08
本帖最后由 付信榕 于 2012-6-12 22:09 编辑

import java.util.*;
class TreeSetDemo_2
{
        public static void main(String[] args)
        {
        TreeSet ts = new TreeSet(new MyCompare());
       
        ts.add(new Student("lisi02",22));
        ts.add(new Student("lisi022",20));
        ts.add(new Student("lisi01",19));
        ts.add(new Student("lisi03",24));
        ts.add(new Student("lisi02",24));
       
        Iterator it = ts.iterator();
        while(it.hasNext())
        {
        Student stu = (Student)it.next();
        System.out.println(stu.getName()+"....."+stu.getAge());
        }
        }
}//少了这个、加了就没错了




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

return s1.getName().compareTo(s2.getName());
}
}

class Student implements Comparable //该接口强制让学生具有比较性
{
private String name;
private int age;

Student(String name, int age)
{
this.name = name;
this.age = age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}

public int compareTo(Object obj)
{
//return 1;

if(!(obj instanceof Student))
throw new RuntimeException("不是学生对象");
Student s = (Student)obj;

System.out.println(this.name+"...compareTo..."+s.name);
if(this.age>s.age)
return 1;
if(this.age==s.age)
{
//return 0;
return this.name.compareTo(s.name);
}
return -1;

}
}

作者: 宋浩    时间: 2012-6-12 22:10
你的代码好像少一个“}”吧,是不是TreeSetDemo_2类没有关闭的大括号呢!!把格式排好吧,用Eclipse一看就出来了!!


作者: 余银桂    时间: 2012-6-12 22:32
一般出现这种提示都是大括号的问题
作者: 赵兵锋    时间: 2012-6-12 22:47
宋浩 发表于 2012-6-12 22:10
你的代码好像少一个“}”吧,是不是TreeSetDemo_2类没有关闭的大括号呢!!把格式排好吧,用Eclipse一看就 ...

Edipse?Eclipse……:P
作者: 宋浩    时间: 2012-6-12 22:54
赵兵锋 发表于 2012-6-12 22:47
Edipse?Eclipse……

我是写的Eclipse啊??我也把他的代码拿去运行了的,格式也排好了,然后发现了问题,但是没有贴出来,亏了!!
作者: 梁清平    时间: 2012-6-12 23:03
这代码。。。这么长。。又没格式。。有能愿意看真的很意外啊。。。
又没一点注释。。。看一眼就头大了。。。

优秀的编程习惯比精秒的算法更加重要啊!!!
作者: 赵兵锋    时间: 2012-6-12 23:03
宋浩 发表于 2012-6-12 22:54
我是写的Eclipse啊??我也把他的代码拿去运行了的,格式也排好了,然后发现了问题,但是没有贴出来,亏 ...

额,我眼花了,继续加油哈!:lol
作者: 王超    时间: 2012-6-12 23:15
付信榕 发表于 2012-6-12 22:08
import java.util.*;
class TreeSetDemo_2
{

这问题好囧  下次遇到就会解决了 !  谢谢喽




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