黑马程序员技术交流社区

标题: 提示return的返回值类型打印时提示不一致 [打印本页]

作者: 郭孟涛    时间: 2013-2-19 20:39
标题: 提示return的返回值类型打印时提示不一致
  1. import java.util.TreeSet;

  2. class TreeSetDemo3  
  3. {
  4.     public static void main(String[] args)  
  5.     {
  6.         TreeSet ts = new TreeSet();

  7.         ts.add(new Student(39));
  8.                 /*ts.add(new Student(52));
  9.         ts.add(new Student(29));
  10.         ts.add(29);
  11.         ts.add(38);
  12.         ts.add(29);
  13.         ts.add(14);*/
  14.          //System.out.println(new Student(22)+"+88");
  15.         System.out.println(ts); //输出结果[14, 29, 30, 38]
  16.     }
  17. }
  18. class Student implements Comparable
  19. {
  20.         private int age;
  21.         Student(int age)
  22.         {
  23.                 this.age = age;
  24.         }

  25.         // 覆写Comparable接口中的比较器
  26.         public int compareTo(Object obj)
  27.         {
  28.                 Student stu = (Student)obj;
  29.                 // obj这里是一个实例化匿名对象,例如new Student(22)
  30.                 System.out.println(stu.age);
  31.                 if (this.age > stu.age)
  32.                 {
  33.                         return 1;
  34.                 }
  35.                 if (this.age < stu.age)
  36.                 {
  37.                         return -1;
  38.                 }
  39.                 return 0;

  40.         }

  41.         public String toString()
  42.     {
  43.         return age; // 提示return的返回值类型打印时提示不一致
  44.     }
  45. }
复制代码
但是,以下这个程序写法几乎一模一样。确运行正常。帮忙指导一下 我哪里写错了。
  1. import java.util.TreeSet;


  2. class TreeSetDemo2  
  3. {
  4.     public static void main(String[] args)  
  5.     {
  6.         TreeSet ts = new TreeSet();

  7.         ts.add(new Student("lisi0",30));
  8.         ts.add(new Student("lisixx",29));/*
  9.         ts.add(new Student("lisi9",29));
  10.         ts.add(new Student("lisi8",38));
  11.         ts.add(new Student("lisixx",29));
  12.      
  13. */

  14.         System.out.println(ts);
  15.     }
  16. }

  17. //同姓名同年龄的学生视为同一个学生。按照学生的年龄排序。
  18. class Student implements Comparable
  19. {
  20.     private int age;
  21.     private String name;
  22.     Student(String name,int age)
  23.     {
  24.         this.age = age;
  25.         this.name = name;
  26.                
  27.     }

  28.     public int compareTo(Object obj)
  29.     {
  30.                
  31.         /
  32.         Student stu = (Student)obj;
  33.        
  34.         if(this.age>stu.age)
  35.             return 1;
  36.         if(this.age==stu.age)
  37.             return 0;
  38.         return -1;
  39.         
  40.         
  41.     }


  42.     public String toString()
  43.     {
  44.         return name+"::"+age;
  45.     }

  46. }
复制代码

作者: 寇弘禄    时间: 2013-2-19 20:53
public String toString()

47.    {

48.        return age; // 提示return的返回值类型打印时提示不一致  age是int型的 但是你上面的返回类型写的是String

49.    }

public String toString()

51.    {

52.        return name+"::"+age;      这个是int型的age和字符串相加后转为了字符串。所以返回类型写String是对的

53.    }

54.



作者: 郭孟涛    时间: 2013-2-19 21:49
zuiaikou 发表于 2013-2-19 20:53
public String toString()

47.    {

谢谢,确实是这样的。
我开始用 return (String)age;做强制转换不管用,原来这个方法是不正确,可能他们是平级的原因吧。

搜索了一下int转Sring的方法:
第一种方法:s=i+"";   //会产生两个String对象
第二种方法:s=String.valueOf(i); //直接使用String类的静态方法,只产生一个对象




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