两个类Hobby和Person,多对多的关系,代码如下:packageassociation;importjava.util.*;publicclassHobby{/*Hobby类的属性hobbyname,一个vector型的persons*/privateStringhobbyname...
两个类Hobby和Person,多对多的关系,代码如下:
package association;
import java.util.*;
public class Hobby {
/*Hobby类的属性hobbyname,一个vector型的persons*/
private String hobbyname;
private Vector persons=new Vector();
/*构造函数*/
public Hobby(String hobbyname,Person person){
this.hobbyname=hobbyname;
persons.add(person);
person.addHobby(hobbyname);
}
/*得到hobbyname*/
public String getHobbyname(){
return hobbyname;
}
/*一个hobby可以有多个person,添加person的方法*/
public void addPerson(String personname,int age){
persons.add(new Person(personname,age));
}
/*输出hobbyname,并将有hobbyname的人名全部输出*/
public String toString(){
String s="hobbyname:"+hobbyname+"\n";
s+=" persons:";
Object[] o=persons.toArray();
Person[] p=new Person[o.length];
for(int i=0;i
p[i]=(Person)o[i];
s+=p[i].getPersonname()+" "+p[i].getAge()+"; ";
}
return s;
}
}package association;
import java.util.*;
public class Person {
/*person类的属性personname,age和一个vector型的hobbies*/
private String personname;
private int age;
private Vector hobbies=new Vector();
/*构造函数*/
public Person(String personname,int age){
this.age=age;
this.personname=personname;
}
/*得到personname*/
public String getPersonname(){
return personname;
}
/*得到age*/
public int getAge(){
return age;
}
/*添加hobby的方法*/
public void addHobby(String hobbyname){
hobbies.add(new Hobby(hobbyname,this));
}
/*输出person,并将其爱好全部输出*/
public String toString(){
String s="personname:"+personname+"\n";
s+=" hobbies:";
Object[]o=hobbies.toArray();
Hobby[] h=new Hobby[o.length];
for(int i=0;i
h[i]=(Hobby)o[i];
s+=h[i].getHobbyname()+" ";
}
return s;
}
/*用于测试的主函数*/
public static void main(String arg[])throws Exception{
Person p1=new Person("mary",20);
p1.addHobby("Biking");
Hobby h2=new Hobby("Swimming",p1);
String s=p1.toString()+"\n";
s+=h2.toString()+"\n";
System.out.print(s);
}
}
希望得到的结果是:
personname:mary
hobbies:Biking Swimming
hobbyname:Swimming
persons:mary 20;
编译没问题,但运行是老是报这样的错误:
Exception in thread "main" java.lang.StackOverflowError
at association.Hobby.(Hobby.java:8)
at association.Person.addHobby(Person.java:24)
at association.Hobby.(Hobby.java:11)
at association.Person.addHobby(Person.java:24)
at association.Hobby.(Hobby.java:11)
at association.Person.addHobby(Person.java:24)
希望帮忙解决下,刚学java出现这种错误很郁闷啊~~哪位大侠帮下忙,有分追加哦:-)
展开