员工类, 有姓名, 年龄, 薪水三个成员属性需要私有并提供get, set方法, 可以通过构造函数进行初始化,并且按照薪水排序  自己刚写的,请问还有哪里错的吗?还有就是 return st.salary - this.salary;这一句报错 请问是什么问题?
错误是 
The operator - is undefined for the argument type(s) java.lang.String, java.lang.String
看了下 貌似是参数未定义,请问怎样修改 谢谢!public class staff implements Comparable {
private String name;
private int age;
private String salary; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getSalary() {
return salary;
} public void setSalary(String salary) {
this.salary = salary;
} @Override
public int compareTo(Object obj) {
if (obj instanceof staff) {
staff st = (staff) obj;
return st.salary - this.salary;
}
return -1;
}
}

解决方案 »

  1.   

    晕,LZ的salary是String类型的,String类型当然不能用 - 处理了
    把salary改成double类型//private String salary;
    private double salary;    //public String getSalary() {
        public double getSalary() {
            return salary;
        }    //public void setSalary(String salary) {
        public void setSalary(double salary) {
            this.salary = salary;
        }当然,如果不想改salary的类型,那么就自己把String转换为数值类型再进行 - 处理即
    return Double.valueOf(st.salary) - Double.valueOf(this.salary);但是,常规设计来说,salary不应该是String类型的,而应该是数值类型
      

  2.   


    谢谢 原来是粗心问题哎....
    我改了 但问题又出来了 重写以后用double类型还是报错是什么原因?
    public double compareTo(Object obj) {
    if (obj instanceof staff) {
    staff st = (staff) obj;
    return st.salary - this.salary;
    }
    return -1;
    }
      

  3.   

    //public double compareTo(Object obj) {//compareTo方法的返回值必须是int类型,否则就不是Comparable接口的方法了
    public int compareTo(Object obj) { //返回值要改成int
    if (obj instanceof staff) {
    staff st = (staff) obj;
    return (st.salary > this.salary ? 1 : (st.salary < this.salary ? -1 : 0));
    }
    return -1;
    }