黑马程序员技术交流社区
标题:
提示return的返回值类型打印时提示不一致
[打印本页]
作者:
郭孟涛
时间:
2013-2-19 20:39
标题:
提示return的返回值类型打印时提示不一致
import java.util.TreeSet;
class TreeSetDemo3
{
public static void main(String[] args)
{
TreeSet ts = new TreeSet();
ts.add(new Student(39));
/*ts.add(new Student(52));
ts.add(new Student(29));
ts.add(29);
ts.add(38);
ts.add(29);
ts.add(14);*/
//System.out.println(new Student(22)+"+88");
System.out.println(ts); //输出结果[14, 29, 30, 38]
}
}
class Student implements Comparable
{
private int age;
Student(int age)
{
this.age = age;
}
// 覆写Comparable接口中的比较器
public int compareTo(Object obj)
{
Student stu = (Student)obj;
// obj这里是一个实例化匿名对象,例如new Student(22)
System.out.println(stu.age);
if (this.age > stu.age)
{
return 1;
}
if (this.age < stu.age)
{
return -1;
}
return 0;
}
public String toString()
{
return age; // 提示return的返回值类型打印时提示不一致
}
}
复制代码
但是,以下这个程序写法几乎一模一样。确运行正常。帮忙指导一下 我哪里写错了。
import java.util.TreeSet;
class TreeSetDemo2
{
public static void main(String[] args)
{
TreeSet ts = new TreeSet();
ts.add(new Student("lisi0",30));
ts.add(new Student("lisixx",29));/*
ts.add(new Student("lisi9",29));
ts.add(new Student("lisi8",38));
ts.add(new Student("lisixx",29));
*/
System.out.println(ts);
}
}
//同姓名同年龄的学生视为同一个学生。按照学生的年龄排序。
class Student implements Comparable
{
private int age;
private String name;
Student(String name,int age)
{
this.age = age;
this.name = name;
}
public int compareTo(Object obj)
{
/
Student stu = (Student)obj;
if(this.age>stu.age)
return 1;
if(this.age==stu.age)
return 0;
return -1;
}
public String toString()
{
return name+"::"+age;
}
}
复制代码
作者:
寇弘禄
时间:
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