做一道题目的时候有个几个方法不知道编写?请高手看过题目后再看看我写的指导下Orz  问题有点长请见谅啊题目: (The person and student class)creat the class as shown in figure ***(即待会我打的类图)Implement the compareTo method in the Person class to compare persons in the compareTo methed to compare students in alphabetical order of their major of their major,last name,first name,and middle initial.
write a test program with the following three metheds
/**Sort an arry of comparable objects */
    public static void sort(Object[] list)
/** Return the max object in an array of comparable objects*/
    public static Object max(Object[] list)
main method: Test the sort and max methed using an array of four students, an array of four Strings, an array of one houndred random rationals, and array of one houndred random integers.
类图:Person    ....△java.lang.Comparable
_____________
-name:Name
_____________
+Person (name:Name)
+getName():Name
+setName(name:Name):void
+toString():String
+equals(object:Object):boolean
+comparTo(object:Object):int
Name    -----◆Person
____________________
-firstName:String
-mi:char
-lastName:String
____________________
+Name(firstName:String,mi:char,lastName:String)
+getFirstName():String
+setFirstName(firstName:String):void
+getMi():char
+setMi(mi:char):void
+getLastName():String
+setLastName(lastName:String):void
+getFullName():String
Student    -------(實綫)△Person
_______________
-major:String
_______________
+student(name:Name,major:String)
+getMajor():String
+setMajor(major:String):void
+toString():String
+compareTo(object:Objext):int以下是我编写的public class Name {private String firstName;
private char mi;
private String lastName;    public Name() {
    
    }
    
    public String getFirstName(){
    
     return firstName;
    }
    
    public void setFirstName(String firstName){
    
     this.firstName = firstName;
    }
    
    public char getMi(){
    
     return mi;
    }
    
    public void setMi(char mi){
    
     this.mi = mi;
    }
    
    public String getLastName(){
    
     return lastName;
    }
    
    public void setLastName(String lastName){
     this.lastName = lastName;
    }
    
    public String getFullName(){
     return firstName+" "+mi+" "+lastName;
    }
}_______________________________________________public class Person implements Comparable{

private Name name;

public Person(){

}
public Person(Name name){
this.name = name;
}

public Name getName(){

return name;
}

public void setName(){
this.name = name;
}
public String toString(){
return "\n"+name.getFullName();
}
/*下面这2个方法不知道该怎么写...*/
public int compareTo(Object object){

return   ;
}

public boolean equals(Object object){

return   ;
}

}________________________________________________
public class Student extends Person{ private String major;

public Student(String name, String major){

}

public String getMajor(){

return major;
}

public void setMajor(String major){

}
/*同上面以下这个也不会*/
public int compareTo(Object object){

return   ;
}

public String toString(){

return super.toString() +
"\nMajor:" + major;
}
}请高手解答下吧

解决方案 »

  1.   

    Implement the compareTo method in the Person class to compare persons in the compareTo methed to compare students in alphabetical order of their major of their major,last name,first name,and middle initial.
    ------
    就是按字母比较major、lastname、firstname、middle initial
    都是字符串类型的,直接用String.compareTo方法就可以搞定了
    lastname、firstname、middle initial这三个是Name类的fields,直接给Nameo verride compareTo方法,怎么写参考下面的代码
    //Person class
    public int compareTo(Object object){
    Person p = (Person)object;
    int tmp = major.compareTo(p.major)
    return tmp<0?-1:(tmp>0? 1 : name.compareTo(p.name));
    }
      

  2.   

    看下 http://www.enet.com.cn/eschool/zhuanti/java 第6课,讲得很详细。
      

  3.   

    believefym(feng)
    那equals方法怎么写呢?
      

  4.   

    int tmp = major.compareTo(p.major)
    major是在student class中的你的代码是在person class中的无法直接调用啊
      

  5.   

    没看仔细,呵呵,
    Person类不要要考虑major,直接比较name,然后Student的compareTo直接比较major并调用父类Person的compareTo方法比较nameequals看你怎么定义两个实例是相等的
    比如class A{int i;}如果i相等就让A的实例equals的话,equals就直接return i==((A)obj).i
      

  6.   

    public int compareTo(Object object){
    Person p = (Person)object;
    int tmp = name.compareTo(p.name)
    return tmp<0?-1:(tmp>0? 1 : name.compareTo(p.name));
    直接调用?会报错compareTo(Name)没有在这里定义
    如果用int tmp = p.compareTo(p.name)到是没有错,不知道对不对,对这些方法不懂老师都没讲还要我们做- -
      

  7.   

    你要先定义Name类的compareTo,写法都类似的就是Name有自己的比较方法compareTo,Person只需要比较Name,也就是直接调用Name的compareTo即可,Student除了要比较Name,还优先比较major,那就结合major的比较和Name的比较,具体怎么实现楼主参考一下上面的代码然后自己看书再想想吧
      

  8.   

    但是类图上显示在Name类中并没有CompareTo方法..
      

  9.   


    既然一定要按类图来,那就不要给Name定义这个方法了,直接在Person、Student中自己比较name,其实可以通过Name的fullname直接对这个fullname比较好了