做一道题目的时候有个几个方法不知道编写?请高手看过题目后再看看我写的指导下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;
}
}请高手解答下吧
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;
}
}请高手解答下吧
------
就是按字母比较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));
}
那equals方法怎么写呢?
major是在student class中的你的代码是在person class中的无法直接调用啊
Person类不要要考虑major,直接比较name,然后Student的compareTo直接比较major并调用父类Person的compareTo方法比较nameequals看你怎么定义两个实例是相等的
比如class A{int i;}如果i相等就让A的实例equals的话,equals就直接return i==((A)obj).i
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)到是没有错,不知道对不对,对这些方法不懂老师都没讲还要我们做- -
既然一定要按类图来,那就不要给Name定义这个方法了,直接在Person、Student中自己比较name,其实可以通过Name的fullname直接对这个fullname比较好了