[java] ClassTable

Pagina: 1
Acties:

  • BitProcessor
  • Registratie: Februari 2001
  • Laatst online: 11-09 11:52
In C kan je dit doen :

int * bla;
int aantal=20;
bla = new int[aantal];

Ik heb nu in Java een klasse gemaakt, en wil in mij main een klassetabel aanmaken.
De klasse noemt Zanggroep en de grootte van de tabel is aantal... Hoe doe je dit nu eigenlijk :? Ik heb al vanalles geprobeerd maar niets lukt :(

"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Ik heb nu in Java een klasse gemaakt, en wil in mij main een klassetabel aanmaken.
Een klassetabel :? Je bedoelt een array?
De klasse noemt Zanggroep en de grootte van de tabel is aantal... Hoe doe je dit nu eigenlijk
Voor het aanmaken van arrays kan je kijken in de http://java.sun.com/tutorial/]Java Tutorial en dan Learning the Java Language.

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


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Misschien bedoel je dit?
code:
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();
}

  • BitProcessor
  • Registratie: Februari 2001
  • Laatst online: 11-09 11:52
Ik bedoel een tabel van klassen :P

Zodat je bv kan doen bla[1].zing() :P

Alarmnummer => THANKS !!! *D

En tabel == Array hoor :P >:) net zoals class == klasse

"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op zondag 18 november 2001 15:35 schreef G8KeePeR het volgende:
Ik bedoel een tabel van klassen :P

Zodat je bv kan doen bla[1].zing() :P
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.
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[] bla; // java kent geen pointers dus gewoon als array declareren
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.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op zondag 18 november 2001 15:40 schreef Bunny het volgende:
int[] bla; // java kent geen pointers
Is wel grappig, java kent bijna alleen maar pointers :)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
G8KeePeR: En tabel == Array hoor :P >:) net zoals class == klasse
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 uitlegt ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
G8KeePeR: Ik bedoel een tabel van klassen :P
Het is trouwens een array van objecten (instanties van klassen).

Het type is een array van een bepaalde klasse :P .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • BitProcessor
  • Registratie: Februari 2001
  • Laatst online: 11-09 11:52
Bedankt hoor, dat probleempje is opgelost, nu heb ik juist nog volgend probleempje :

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 :
code:
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
code:
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


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Je hebt alleen een x aantal adressen (lengte van de array van zanggroep) gereserveerd, maar de daadwerkelijke objecten nog niet..
code:
1
2
3
4
5
//maak de objecten ook echt aan.
for(int k=0;k<aantal;k++)
{
      zangGroepArray[k] = new ZangGroep();
}

  • BitProcessor
  • Registratie: Februari 2001
  • Laatst online: 11-09 11:52
hey ja, hartelijk bedankt hoor (ben aan het :Z 'en vrees ik, direct even proberen)

"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Vertaal de melding eens in het Nederlands en denk na:

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


  • BitProcessor
  • Registratie: Februari 2001
  • Laatst online: 11-09 11:52
Als je kijkt naar de code zie je toch dat die variabelen effectief een waarde toegewezen krijgen ?

"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
G8KeePeR: Als je kijkt naar de code zie je toch dat die variabelen effectief een waarde toegewezen krijgen ?
Idd (denk ik ;) ) maar de semantische analyse is niet zo slim omdat allemaal precies uit te kunnen zoeken. Hij moet dan gaan redeneren over de mogelijke waarden van je variabelen en dat doet hij niet.

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


  • BitProcessor
  • Registratie: Februari 2001
  • Laatst online: 11-09 11:52
dus ik moet die vars op voorhand gewoon allemaal waardeke geven en prob is solved ?

"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
G8KeePeR: dus ik moet die vars op voorhand gewoon allemaal waardeke geven en prob is solved ?
Als er geen andere fouten in zitten is dat inderdaad de oplossing :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • BitProcessor
  • Registratie: Februari 2001
  • Laatst online: 11-09 11:52
foutje...

"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943

Pagina: 1