JAVA ArrayList Ojbect vraag

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mr Beronne

Mr Beronne

16/03/2014 19:20:35
Quote Anchor link
Beste lezers,

Ik ben bezig met oefen opdrachten om java te leren en zit nu met het volgende probleem.

Ik heb twee classes namelijk: Club en Membership.
Nu wil ik waarde van de class Membership kunnen gebruiken in de class Club. Ik heb nu dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Club
{
    // An arrayList for storing Members
    private ArrayList<Membership> memberships;
    // Use object for Members
    private Membership example;
    // Number of members
    private int numberOfMembers;
    
    /**
     * Constructor for objects of class Club
     */
    public Club()
    {
        memberships = new ArrayList<Membership>();
        numberOfMembers = 0;  
    }

    public int test()
    {
        return example.halloMsg();

    }


Het gaat nu om de method test, Deze waarde moet komen uit de class Membership functie halloMsg().
in membership staat dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class Membership
{
    // The name of the member.
    private String name;
    // The month in which the membership was taken out.
    private int month;
    // The year in which the membership was taken out.
    private int year;

    /**
     * Constructor for objects of class Membership.
     * @param name The name of the member.
     * @param month The month in which they joined. (1 ... 12)
     * @param year The year in which they joined.
     */
    public Membership(String name, int month, int year)
        throws IllegalArgumentException
    {
        if(month < 1 || month > 12) {
            throw new IllegalArgumentException(
                "Month " + month + " out of range. Must be in the range 1 ... 12");
        }
        this.name = name;
        this.month = month;
        this.year = year;
    }
    
    public int halloMsg()
    {
        return 5;
    }
}


Ik hoop dat iemand mij kan helpen, kom er niet uit
Gewijzigd op 16/03/2014 19:22:07 door Mr Beronne
 
PHP hulp

PHP hulp

26/04/2024 19:37:33
 
Dos Moonen

Dos Moonen

16/03/2014 20:05:21
Quote Anchor link
'example' is op het moment null, dus je zult een NPE (NullPointerException) krijgen tot je een Membership object toewijst aan 'example'.

Je zult ergens 'new Membership("Darsstar", 3, 2014)' moeten hebben...

Het is me niet echt duidelijk wat je vraagt, of wat je wilt berijken. ArrayList implementeert interface List (http://download.java.net/jdk8/docs/api/java/util/List.html, Java 8 komt overmorgen uit, dus niet zeuren dat ik 8 link :p) en jouw ArrayList<Membership> heeft dus onder andere de methoden 'public void add(Membership)' en 'public Membership get(int)'.

Als je meer info geeft over wat je wilt, wat je geprobeerd hebt en wat nog steeds niet lukt kan ik beter helpen.
 
Mr Beronne

Mr Beronne

16/03/2014 20:32:27
Quote Anchor link
Heb in de class club naar functie Club() dit ook nog staan en nog andere enkele functies.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
    /**
     * Add a new member to the club's list of members.
     * @param member The member object to be added.
     */
    public void join(Membership member)
    {
        memberships.add(member);
    }


Wat ik wil bereiken is dat in in de class Club een functie uit de class Membership kan aanroepen. Normaal werkt dit wel maar ik maak van de class Membership ArrayList objecten aan, en daardoor weet ik niet hoe ik een functie uit de class membership kan gebruiken.

Want de opdracht is namelijk dat ik moet kijken hoeveel leden in welke maand lid zijn geworden. Bijvoorbeeld een club heeft 100 leden maar 10 daarvan zijn lid geworden in maand 2 (Februari).

De class Membership heeft een functie getMonth, deze geeft een getal weer van 1 t/m 12 wat voor de maanden staat. Nu wil ik een functie bouwen in de class Club dat ik kan zien hoeveel leden in de zelfde maand lid zijn geworden

Heb tot nu toe dit maar werkt nog niet helemaal
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    /**
     * Determine the number of members who joined in the
     * given month.
     * @param month The month we are interested in.
     * @return The number of members who joined in that month.
     */
    public int joinedInMonth(int month)
    {  
        int counter = 1;
        for (int i=0; i < numberOfMembers(); i++)
        {
            numberOfMembers = memberships.get(i).getMonth();
            if(month == numberOfMembers)
            {
                   System.out.println(numberOfMembers);

            }
        }
       return counter;
    }
Gewijzigd op 16/03/2014 20:37:25 door Mr Beronne
 
Dos Moonen

Dos Moonen

16/03/2014 21:08:10
Quote Anchor link
1) Je start met 1 lid? (counter = 1)
2) numberOfMembers() is een getter voor Club.numberOfMembers? Waarom bestaat die variabele eigenlijk? members.size() hoef je zelf niet up to date te houden.
3) Club.join() voegt alleen iets toe aan members, het doet niets met numberOfMembers, nogmaals, gebruik gewoon members.size()?
4) probeer de alternatieve for syntax eens.
5) numberOfMembers = memberships.get(i).getMonth() ? vreemde naam, komt totaal niet overeen met de inhoud.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
public int joinedInMonth(int month) {
  int counter; // = 0; is overbodig aangezien 0 de standaard waarde is

  for (Membership membership : members) {
    if (membership.getMonth() == month) {
      counter++;
    }
  }

  return counter;
}


De rest van de punten moet je zelf verbeteren
 
Mr Beronne

Mr Beronne

16/03/2014 21:16:25
Quote Anchor link
Als ik jouw code uitvoer zegt hij:
cannont find symbol - variable members

op deze regel: for (Membership membership : members) {

Toevoeging op 16/03/2014 21:20:27:

Ik heb hem nu:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
    public int joinedInMonth(int month) {
      int counter = 0; // = 0; is overbodig aangezien 0 de standaard waarde is
    
      for (Membership membership : memberships) {
        if (membership.getMonth() == month) {
          counter++;
        }
      }
    
      return counter;
    }


Trouwens ik heb counter wel weer op 0 gezet omdat ik anders de volgende error kreeg:
variable counter might nog have been initialized
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.