package homework4;public class Student {
String name;
int age;
// 隐藏了无形参的构造方法
// 当写此方法时自动消失,无论有无形参
Student deskmate; Student() {
System.out.println("产生对象时,调用此构造方法1!");
}; Student(String name, int age) {
this.name = name;
this.age = age;
this.setDeskmate(deskmate);
System.out.println("产生对象时,调用此构造方法2!");
} void setName(String name) {
this.name = name;
} String getName() {
return name;
} void setAge(int age) {
this.age = age;
} int getAge() {
return age;
} void setDeskmate(Student aa) {
if (this.deskmate == deskmate)
return; this.deskmate = getDeskmate();
aa.setDeskmate(this); } Student getDeskmate() {
return deskmate;
}
}package homework4;import java.util.Scanner;public class CheckStudent {
public static void main(String[] args) { // Student student1 = new Student();
Student[] classone = new Student[3];
classone[0] = new Student("zhangsan", 20);
classone[1] = new Student("lisi", 21);
classone[2] = new Student("wangwu", 20);
// 产生两个Student对象
Student student1 = classone[0];
System.out.println(student1.getName());
Student student2 = classone[1];
System.out.println(student2.getName());
// ****************
System.out.println("====================");
// student2.setName("aa");
student1.setDeskmate(student2);
System.out.println("yichangchu->");
// ??????????????????
// 要求打印出student1的同桌是谁,
//相应student2的同桌也是student1,并打印出来
System.out.println(student2.getDeskmate().name);
//
// 空指针异常,不知道错在哪里?
// *****************
}}
String name;
int age;
// 隐藏了无形参的构造方法
// 当写此方法时自动消失,无论有无形参
Student deskmate; Student() {
System.out.println("产生对象时,调用此构造方法1!");
}; Student(String name, int age) {
this.name = name;
this.age = age;
this.setDeskmate(deskmate);
System.out.println("产生对象时,调用此构造方法2!");
} void setName(String name) {
this.name = name;
} String getName() {
return name;
} void setAge(int age) {
this.age = age;
} int getAge() {
return age;
} void setDeskmate(Student aa) {
if (this.deskmate == deskmate)
return; this.deskmate = getDeskmate();
aa.setDeskmate(this); } Student getDeskmate() {
return deskmate;
}
}package homework4;import java.util.Scanner;public class CheckStudent {
public static void main(String[] args) { // Student student1 = new Student();
Student[] classone = new Student[3];
classone[0] = new Student("zhangsan", 20);
classone[1] = new Student("lisi", 21);
classone[2] = new Student("wangwu", 20);
// 产生两个Student对象
Student student1 = classone[0];
System.out.println(student1.getName());
Student student2 = classone[1];
System.out.println(student2.getName());
// ****************
System.out.println("====================");
// student2.setName("aa");
student1.setDeskmate(student2);
System.out.println("yichangchu->");
// ??????????????????
// 要求打印出student1的同桌是谁,
//相应student2的同桌也是student1,并打印出来
System.out.println(student2.getDeskmate().name);
//
// 空指针异常,不知道错在哪里?
// *****************
}}
楼主【zhoufeng345678】截止到2008-07-17 20:46:34的历史汇总数据(不包括此帖):
发帖的总数量:16 发帖的总分数:1070 每贴平均分数:66
回帖的总数量:7 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:14 结贴的总分数:990
无满意结贴数:1 无满意结贴分:20
未结的帖子数:2 未结的总分数:80
结贴的百分比:87.50 % 结分的百分比:92.52 %
无满意结贴率:7.14 % 无满意结分率:2.02 %
楼主加油
return;因为这个条函数永远成立。
this.deskmate和deskmate 是一个东西。
而且下面的this.deskmate = getDeskmate();
aa.setDeskmate(this);
也有问题。会无限递归调用
Student deskmate; Student(String name, int age) {
this.name = name;
this.age = age;
this.setDeskmate(deskmate);//这句有问题
System.out.println("产生对象时,调用此构造方法2!");
}
void setDeskmate(Student aa) {
if (this.deskmate == deskmate) {
return;
}
this.deskmate = getDeskmate();
aa.setDeskmate(this); } this.setDeskmate(deskmate);
看看你的这几个方法,deskmath转来转去一直是null
if (this.deskmate == deskmate)
return; 把这一句改成if (this.deskmate == aa)试试
//设置同桌的方法修改一下就可以了 你的思维太乱了 就是一个互为同桌的关系
void setDeskmate(Student aa) {
if (this.deskmate == aa) {
return;
}
this.deskmate = aa;
aa.setDeskmate(this);
}