附件?...
太懒了吧......空指针,这是最好找问题的异常了.
Person.hashCode方法抛出的,在Person类第26行...喵~~~`

解决方案 »

  1.   

    你有一个引用类型没有赋值..NullPointerException  就是这个意思.  好好看一下.  
      

  2.   

    他一共有6个类+1个Main
    你说他能Ctrl+C 然后Ctrl+V上来不??小孩子也不容易啊
      

  3.   

    空指针问题啊....DEBUG一步步走,应该很容易就定位问题了吧.
      

  4.   

    Person.java的这个方法出了空指针
    //生成散列码
    public int hashCode() {
    return 7*firstName.hashCode()+13*surname.hashCode();
    }
    应该是这个方法出错了
    //从键盘读取人的信息
    public static Person readPerson() {
    String firstName =null;
    String surname = null;
    try {
    System.out.print("输入你的名字:");
    firstName = keyboard.readLine().trim();
    System.out.print("输入你的姓氏:");
    surname = keyboard.readLine().trim();
    } catch(IOException e) {
    System.err.println("姓名输入错误!");
    e.printStackTrace();
    System.exit(1);
    }
    return new Person(firstName,surname);
    }
      

  5.   

    空值…………常见错误…………在Person.java类26行,你仔细分析下这里为什么会是空值就完了
      

  6.   


    import java.io.Serializable;
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;public class Person implements Comparable<Person>, Serializable {
    //构造函数
    public Person(String firsName, String surname) {
    this.firstName = firsName;
    this.surname = surname;
    }

    public String toString() {
    return firstName + " " + surname;
    }
    public int compareTo(Person person) {
    int result =surname.compareTo(person.surname);
    return result==0?firstName.compareTo(((Person)person).firstName):result;
    }
    //比较方法
    public boolean equals(Object person) {
    return compareTo((Person)person) == 0;
    }
    //生成散列码
    public int hashCode() {
    return 7*(firstName.hashCode())+13*(surname.hashCode());
    }
    //从键盘读取人的信息
    public static Person readPerson() {
    String firstName =null;
    String surname = null;
    try {
    System.out.print("输入你的名字:");
    firstName = keyboard.readLine().trim();
    System.out.print("输入你的姓氏:");
    surname = keyboard.readLine().trim();
    } catch(IOException e) {
    System.err.println("姓名输入错误!");
    e.printStackTrace();
    System.exit(1);
    }
    return new Person(firstName,surname);
    }

    private static BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
    private String firstName;
    private String surname;
    }
    其实是你不小心引起的,我帮你找改了个地方,你再试试
      

  7.   

    对于错误,我已经帮你改过了,我觉得整体来说不错,但是写进去的是乱码,应该跟writeObject有关系
      

  8.   

    就是这个
    public Person(String firsName, String surname) {
            this.firstName = firsName;
            this.surname = surname;
        }
      

  9.   

    运行成功了,没想到竟然是Person类里firsName少打了一个字母,折腾了好久,就是没检查出来
    谢谢hmsuccess