JAVA ArrayList Ojbect vraag
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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();
}
{
// 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)
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
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;
}
}
{
// 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
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.
Code (php)
1
2
3
4
5
6
7
8
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);
}
* 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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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;
}
* 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
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)
1
2
3
4
5
6
7
8
9
10
11
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;
}
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
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)
1
2
3
4
5
6
7
8
9
10
11
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;
}
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