"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943
Een klassetabelIk heb nu in Java een klasse gemaakt, en wil in mij main een klassetabel aanmaken.
Voor het aanmaken van arrays kan je kijken in de http://java.sun.com/tutorial/]Java Tutorial en dan Learning the Java Language.De klasse noemt Zanggroep en de grootte van de tabel is aantal... Hoe doe je dit nu eigenlijk
Je kan ook overwegen om 1 van de verzamelingen van de Java Collections in java.util te gebruiken.
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| //object definitie
class ZangGroep
{
public ZangGroep()
{
}
}
//aanmaak array. (je hebt nu 'aantal' adressen voor objecten
// gereserveerd, maar de daarwerkelijke geheugen voor objecten nog niet.
ZangGroep[] zangGroepArray = new ZangGroep[aantal];
//maak de objecten ook echt aan.
for(int k=0;k<aantal;k++)
{
zangGroepArray[k] = new ZangGroep();
} |
Zodat je bv kan doen bla[1].zing()
Alarmnummer => THANKS !!!
En tabel == Array hoor
"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943
Je bedoelt dus een array Het nadeel van een array is dat je vast zit aan een bepaalde grote en dat je alleen heel snel op index kan zoeken. Maar stel dat je bv op bandnaam zou willen zoeken dan zou een hashmap/hashtable ook interessant zijn. Als je wel geindexeerd wilt zoeken dan zou je ook een arraylist/vector kunnen gebruiken. Het voordeel hieraan is dat je een dynamische grote hebt en niet statisch zoals de array. Maar een nadeel is dat ze weer een stuk langzamer zijn dan een array.Op zondag 18 november 2001 15:35 schreef G8KeePeR het volgende:
Ik bedoel een tabel van klassen
Zodat je bv kan doen bla[1].zing()
Denk van te voren heel goed na over de datastructuren die je wilt gebruiken want anders gaat je dat verderop opbreken. Succes ermee.
Link met alle collection objecten:
http://java.sun.com/j2se/1.4/docs/api/java/util/package-summary.html
Verwijderd
int aantal=20; // evt als final declareren als dit aantal niet meer veranderd, kan de compiler helpen snellere code te bakken
bla = new int[aantal];
Zanggroep[] groupie = new Zangroep[aantal];
Als je de grootte van de array niet van tevoren weet, kun je beter een java.util.Vector of (met een nieuwere java-versie) een van de List-implementaties gebruiken. Zie daarvoor de docs.
Is wel grappig, java kent bijna alleen maar pointersOp zondag 18 november 2001 15:40 schreef Bunny het volgende:
int[] bla; // java kent geen pointers
Mwah, dat ligt er maar aan. Array is over het algemeen een wat betere en gebruikelijkere benaming. class is de Engelse vertaling van klasse dus dat is niet echt een vergelijking. Toch bedankt dat je het ff uitlegtG8KeePeR: En tabel == Array hoor![]()
net zoals class == klasse
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment
Het is trouwens een array van objecten (instanties van klassen).G8KeePeR: Ik bedoel een tabel van klassen
Het type is een array van een bepaalde klasse
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment
ZanggroepMain.java:26: variable itemp might not have been initialized
groep[0].bereken(itemp, dtemp1, dtemp2);
^
ZanggroepMain.java:26: variable dtemp1 might not have been initialized
groep[0].bereken(itemp, dtemp1, dtemp2);
^
ZanggroepMain.java:26: variable dtemp2 might not have been initialized
groep[0].bereken(itemp, dtemp1, dtemp2);
^
ZanggroepMain.java:41: variable hoogstepersoon might not have been initialized
System.out.println("Persoon met hoogste score in deze groep : " + hoogstepersoon);
^
ZanggroepMain.java:42: variable hoogstescore might not have been initialized
System.out.println("Score van deze persoon : " + hoogstescore);
^
5 errors
Code is de volgende :
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
| //Zanggroep.java
import java.*;
import be.hogent.iii.*;
class Zanggroep {
private
final static int aantalleden=10;
double[] scores;
Zanggroep () {
scores=new double[aantalleden];
for(int i=0 ; i<aantalleden ; i++) {
scores[i]=0;
}
}
//end private
public
void vulop (){
double waarde;
System.out.println("Geef de scores voor deze groep :");
for (int i=0 ; i<aantalleden ; i++) {
System.out.println("score" + i);
waarde=Invoer.in.leesInt();
scores[i]=waarde;
}
System.out.println("Done...");
}
void bereken (int hoogstenummer, double hoogstescore, double groepgemid) {
hoogstenummer=0;
double hoogste=scores[0];
hoogstescore=hoogste;
//hoogste score + nummer persoon met die score :
for (int i=1 ; i<aantalleden ; i++)
if (scores[i]>hoogste) hoogstenummer=i;
hoogstescore=scores[hoogstenummer];
//groepsgemiddelde :
for (int i=0 ; i<aantalleden ; i++) {
groepgemid+=scores[i];
}
groepgemid/=aantalleden;
}
//end public
} |
en
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
33
34
35
36
37
38
39
40
41
42
43
44
45
| //ZanggroepMain.java
import java.io.*;
import java.text.*;
import be.hogent.iii.*;
class ZanggroepMain {
public static void main(String[]args){
final int max=10;
int aantal, grootste_groep, hoogstepersoon, itemp;
double hoogstescore, groepgemid, dtemp1, dtemp2;
System.out.println("Hoeveel zanggroepen zijn er ?(max 10)");
aantal=Invoer.in.leesInt();
while (aantal<1 || aantal>max) {
System.out.println("Min 1 en Max 10 aub !");
aantal=Invoer.in.leesInt();
}
Zanggroep[] groep=new Zanggroep[aantal];
System.out.println("Geef scores per groep aub");
for (int i=0 ; i<aantal ; i++ ) {
System.out.println("Groep" + i);
groep[i].vulop();
}
groep[0].bereken(itemp, dtemp1, dtemp2);
grootste_groep=0;
groepgemid=dtemp2;
for (int i=0 ; i<aantal ; i++) {
groep[i].bereken(itemp, dtemp1, dtemp2);
if (dtemp2>groepgemid) {
groepgemid=dtemp2;
grootste_groep=i;
hoogstepersoon=itemp;
hoogstescore=dtemp1;
}
}
System.out.println("Groep met hoogste gemiddelde : " + grootste_groep);
System.out.println("Groepsgemiddelde van deze groep : " + groepgemid);
System.out.println("Persoon met hoogste score in deze groep : " + hoogstepersoon);
System.out.println("Score van deze persoon : " + hoogstescore);
}
} |
"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943
1
2
3
4
5
| //maak de objecten ook echt aan.
for(int k=0;k<aantal;k++)
{
zangGroepArray[k] = new ZangGroep();
} |
"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943
Variable x might not have been initialized
->
Variabele x heeft mogelijk geen waarde gekregen voordat hij wordt gebruikt.
Voor echte Java newbie vragen kan je er toch beter een boek over de eerdere genoemde Java Tutorial bij pakken...
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment
"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943
Idd (denk ikG8KeePeR: Als je kijkt naar de code zie je toch dat die variabelen effectief een waarde toegewezen krijgen ?
Alleen als je in een lineair stuk variabelen alsnog een waarde geeft of in een if-then-else of switch die compleet dekkend is, zal de compiler dit achterhalen en niet klagen.
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment
"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943
Als er geen andere fouten in zitten is dat inderdaad de oplossingG8KeePeR: dus ik moet die vars op voorhand gewoon allemaal waardeke geven en prob is solved ?
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment
"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943