-3

I'm writing a program which utilizes OOP. The program I am creating is supposed to recruit applicants to a team. In my Team.java, I created a method which is supposed to accept members and add it to the team. This is a snippet of my code:

public int maxMembers;
public Member members[] = new Member[maxMembers];
public int memberCount = 0;

        public void addMember(Member newMember) {
            members[maxMembers] = newMember;
            memberCount++;
        }

I have tried this code but the line,

members[maxMembers] = newMember;

keeps throwing an error java.lang.ArrayOutOfBoundsException: 2

I have tried using a for loop in adding a new member but it does not do what I expected. Can anyone assist me in finding a solution?

peewee
  • 1
  • 1
  • Have you try 'members[memberCount] = newMember;' ! And what is value of maxMembers before creating 'new Member' ? Can you adapt your question ? – schlebe Jun 14 '20 at 06:52

3 Answers3

0

You have to assign maxMembers a value in the first line, otherwise your array will have 0 elements.

public int maxMembers = 10;
Balastrong
  • 4,336
  • 2
  • 12
  • 31
  • I see. But I'm following a UML class diagram given to me and in it, there was not a value indicated to `maxMembers`. I will still try this nonetheless. – peewee Jun 14 '20 at 06:48
0

Firstly, you did not initialize the variable maxMembers.Also, in the code, the line members[maxMembers] = newMember; would always put your entry in the end of the array, I think thats not the intended use of your method, public void addMember(Member newMember) Rewriting your method would look like,

        public int maxMembers=somePositiveInteger;
        public Member members[] = new Member[maxMembers];
        public int memberCount = 0;

        public void addMember(Member newMember) {
            members[memberCount] = newMember;//here
            memberCount++;
        }
Noushad
  • 384
  • 3
  • 11
0

Initialize the array with a value so that number of elements in array can be decided.

Varnit Rohilla
  • 139
  • 1
  • 5