为什么会出现这个异常,如何解决? 附件?...太懒了吧......空指针,这是最好找问题的异常了.Person.hashCode方法抛出的,在Person类第26行...喵~~~` 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你有一个引用类型没有赋值..NullPointerException 就是这个意思. 好好看一下. 他一共有6个类+1个Main你说他能Ctrl+C 然后Ctrl+V上来不??小孩子也不容易啊 空指针问题啊....DEBUG一步步走,应该很容易就定位问题了吧. 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); } 空值…………常见错误…………在Person.java类26行,你仔细分析下这里为什么会是空值就完了 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;}其实是你不小心引起的,我帮你找改了个地方,你再试试 对于错误,我已经帮你改过了,我觉得整体来说不错,但是写进去的是乱码,应该跟writeObject有关系 就是这个public Person(String firsName, String surname) { this.firstName = firsName; this.surname = surname; } 运行成功了,没想到竟然是Person类里firsName少打了一个字母,折腾了好久,就是没检查出来谢谢hmsuccess 一道英文题目看不懂,也找不到规律,应该不难。 JAVA类路径 项目打包成jar之后无法实现对文件的写操作(应该是路径的问题,不知如何去改) 求助!!运行jar包时不能运行引用外部jar文件的问题 SOCKET问题 如何写一个给 c 调用的java程序 关于释放Graphics 的问题 请教java精神病医生程序 请问java中的哪个map实现能够按照放入集合的顺序存储? 关于javascript的常用函数问题 企业中的Swing 控件主要是用来做什么的 文件读取的问题,求助。
你说他能Ctrl+C 然后Ctrl+V上来不??小孩子也不容易啊
//生成散列码
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);
}
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;
}
其实是你不小心引起的,我帮你找改了个地方,你再试试
public Person(String firsName, String surname) {
this.firstName = firsName;
this.surname = surname;
}
谢谢hmsuccess