看看我的Java程序

来源:百度知道 编辑:UC知道 时间:2024/06/14 18:53:28
Cat.java
public class Cat implements Comparable{
private String FirstName;
private String LastName;
Cat(String FirstName,String LastName){
this.FirstName = FirstName;
this.LastName = LastName;
}

public int compareTo(Object o){
Cat c = (Cat) o;
int cmp=this.LastName.compareTo(c.FirstName);
return cmp!=0 ? cmp:this.FirstName.compareTo(c.LastName);
}
}

CompareDemo.java
import java.util.*;

public class CompareDemo{
public static void main(String [] args){
LinkedList<Cat> cats = new LinkedList<Cat> ();
cats.add(new Cat("Jieseg","Cai"));
cats.add(new Cat("kese","Fan"));
cats.add(new Cat("Tasfe","Ding"));

System.out.println(cats);
Collections.sort(cats);
System.out.println(cats);
}
}

这是我的一个用Comparable的程序,为什么输出结果不对呢?怎么改?<

你直接输出的cat对象当然会输出这些东西了,你没有覆盖Object里面的toString()方法的话直接输出这个对象的时候就会输出它的类名和hash值,你可以在Cat定义一个public String toString()方法
public String toString(){
return "FirstName is"+FirstName+"LastName is"+LastName;
}

你直接输出cats的话,是输出的cats这个对象的地址。输出语句:System.out.println();一般输出String或int,float等数值才会输出内容。而且cats是数值,你要得到对象才能再输出cat对象的内容。

你可以改为输出FirstName和LastName
比如,在Cat.java里,增加:
public String getFirstName(){
return this.FirstName;
}
public String getLastName(){
return this.LastName;
}
然后,在CompareDemo.java里,修改为:
System.out.println(cats.get(0).getFirstName());
Collections.sort(cats);
System.out.println(cats.get(0).getLastName());

把Cat的toString方法重写下