java多对多_jaVa中多对多关系的代码问题

两个类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出现这种错误很郁闷啊~~哪位大侠帮下忙,有分追加哦:-)

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值