//科目类
public class Subject {
private String sno;
private String subName;
private Teacher[] teaArr;
public Teacher[] getTeaArr() {
return teaArr;
}
public void setTeaArr(Teacher[] teaArr) {
this.teaArr = teaArr;
}
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getSubName() {
return subName;
}
public void setSubName(String subName) {
this.subName = subName;
}
public Subject(){}
public Subject(String sno, String subName) {
super();
this.sno = sno;
this.subName = subName;
}
public Subject(String sno, String subName, Teacher[] teaArr) {
super();
this.sno = sno;
this.subName = subName;
this.teaArr = teaArr;
}
}
//老师类
public class Teacher {
private String tName;
private String tAge;
private String tNo;
private Subject subs;
public Teacher(String tName, String tAge, String tNo, Subject subs) {
super();
this.tName = tName;
this.tAge = tAge;
this.tNo = tNo;
this.subs = subs;
}
public Subject getSubs() {
return subs;
}
public void setSubs(Subject subs) {
this.subs = subs;
}
public String gettName() {
return tName;
}
public void settName(String tName) {
this.tName = tName;
}
public String gettAge() {
return tAge;
}
public void settAge(String tAge) {
this.tAge = tAge;
}
public String gettNo() {
return tNo;
}
public void settNo(String tNo) {
this.tNo = tNo;
}
public Teacher(){}
public Teacher(String tName, String tAge, String tNo) {
super();
this.tName = tName;
this.tAge = tAge;
this.tNo = tNo;
}
}
//测试类
//输出语句报错:Exception in thread "main" java.lang.NullPointerException
public class Test2 {
public static void main(String[] args) {
Teacher t1 = new Teacher("t1","42","1200");
Teacher t2 = new Teacher("t2","22","1202");
Teacher t3 = new Teacher("t3","62","1203");
Teacher[] tea = {t1,t2,t3};
Subject chinese = new Subject("2020","chinese",tea);
for(Teacher y:chinese.getTeaArr()){
System.out.println(y.gettName()+"--"+y.gettNo()+"--"+y.gettAge()+"--"+y.getSubs().getSno()+"--"+y.getSubs().getSubName());
}
}
}
teacher 的 subs 没有初始化,还是null
修改如下:
public static void main(String[] args) {
Teacher t1 = new Teacher("t1","42","1200");
Teacher t2 = new Teacher("t2","22","1202");
Teacher t3 = new Teacher("t3","62","1203");
Teacher[] tea = {t1,t2,t3};
Subject chinese = new Subject("2020","chinese",tea);
t1.setSubs(chinese);
t2.setSubs(chinese);
t3.setSubs(chinese);
for(Teacher y:chinese.getTeaArr()){
System.out.println(y.gettName()+"--"+y.gettNo()+"--"+y.gettAge()+"--"+y.getSubs().getSno()+"--"+y.getSubs().getSubName());
}
}
你这是在搞什么,为什么Teacher会有3个参数和4个参数两个不同的构造函数
你后面全部调用的是3个参数的构造函数,4个参数的没有调用,导致其中一个成员没有赋值