Toon posts:

[Java]teller meegeven aan variabele

Pagina: 1
Acties:
  • 231 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Het volgenbde werkt.. alleen geeft ie de verschillende klanten niet weer.
Als ik er hard inzet: klant1.getnaam() dan verschijnt er netjes de goede naam. Ook met klant2.getnaam().

Hoe verander ik de code nu zo dat klant[teller] gebruikt wordt. Dus éérst klant1, dán klant2 enz..
code:
1
2
3
4
5
6
7
8
9
public void vulLijst()
{
//vullen van lijst
// for ($I=1; $I<= $numrows;$I++)

  for (int teller = 0; teller<aantalKlanten; teller++)
    {
    choice1.addItem(klant1.getNaam());
    }

Verwijderd

Collectie maken met klant objecten.. :)

Verwijderd

Topicstarter
Op vrijdag 07 juni 2002 13:44 schreef webskipper het volgende:
Collectie maken met klant objecten.. :)
Zou je misschien iets meer willen uitleggen?

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:11
Gebruik een array waar je al uw klantenobjecten in zet.
Bekijk uw manual eens over dat onderwerp.

https://fgheysels.github.io/


Verwijderd

Maar bij een array moet je de grootte van te voren defineren en als je die niet weet kun je ook bv. een Vector gebruiken.

http://java.sun.com/j2se/1.4/docs/api/java/util/Vector.html

Een vector is een dynamisch groeiende array waar je je objecten in kunt stoppen en uit kunt halen. Hoe het precies werkt staat uitgelegd in de javadocs (hierboven)

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:11
Op vrijdag 07 juni 2002 13:42 schreef samba het volgende:

Hoe verander ik de code nu zo dat klant[teller] gebruikt
Je gebruikt hier zelf al een beetje de goede syntax.

De grootte van een array is idd vooraf gedefinieerd. Indien je niet weet hoeveel objecten je moet bijhouden kun je een Vector of een andere collection class gebruiken.

* whoami is niet goed op de hoogte van de classes in Java.

https://fgheysels.github.io/


Verwijderd

Ik zou gewoon een Vector gebruiken.
Voorbeeldje:
code:
1
2
3
4
5
6
7
8
9
10
Klant klant = new Klant();
klant.setNaam("Sun Microsystems");
Vector klanten = new Vector();
klanten.add(klanten.size(), klant);
klant.setNaam("Microsoft");
klanten.add(klanten.size(), klant);

for(int i=0; i < klanten.size(); i++){
   System.out.println( ((Klant)klanten.get(i)).getNaam() );
}

Hier maak ik dus een Klant object (even zelf zo bedacht, ik weet niet hoe jou klant object eruit ziet). Die stop ik in een Vector. klanten.size() returned het aantal elementen in de vector.
Bij het getten van een object uit de Vector moet je het Object eerst weer even naar het goede type casten. En dan kan je getNaam() oproepen.

  • MacLinux
  • Registratie: Mei 2002
  • Laatst online: 27-03-2024
Je geeft aan de methode het aantal klanten door.

public void vulLijst(int aantalKlanten)
{
//vullen van lijst
// for ($I=1; $I<= $numrows;$I++)

for (int teller = 0; teller<aantalKlanten; teller++)
{
choice[teller].addItem(klant[teller].getNaam());
}

Je kunt ook gebruik maken van gelinkte lijsten. Dan maakt het niet uit hoeveel klanten er zijn. Je kunt er steeds weer eentje toevoegen.

Verwijderd

Topicstarter
Op vrijdag 07 juni 2002 13:59 schreef MacLinux het volgende:
Je geeft aan de methode het aantal klanten door.

public void vulLijst(int aantalKlanten)
{
//vullen van lijst
// for ($I=1; $I<= $numrows;$I++)

for (int teller = 0; teller<aantalKlanten; teller++)
{
choice[teller].addItem(klant[teller].getNaam());
}

Je kunt ook gebruik maken van gelinkte lijsten. Dan maakt het niet uit hoeveel klanten er zijn. Je kunt er steeds weer eentje toevoegen.
Nee.. zoiets zat ik ook al aan te denken. Maar het probleem is. het werkt niet :(

Ik zoek dus een mogelijkheid om het zo voor elkaar te krijgen dat:

klant[teller] wordt veranderd in klant1 klant2 enz enz

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:11
Op vrijdag 07 juni 2002 14:05 schreef samba het volgende:
klant[teller] wordt veranderd in klant1 klant2 enz enz
Je zult het met een array of een Vector moeten doen.

https://fgheysels.github.io/


Verwijderd

code:
1
2
3
4
5
6
7
8
9
Klanten klant[]=new Klanten[aantalklanten];

for (int teller = 0; teller<aantalKlanten; teller++){
    klant[teller]=new Klanten(...);
} 

for (int teller = 0; teller<aantalKlanten; teller++){
    choice1.addItem(klant[teller].getNaam());
}

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

Alarmnummer

-= Tja =-

Je kan het beste geen array gebruiken omdat je dan vastzit aan een bepaalde lengte. Je kan beter dit doen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class KlantList{
   
   private List _list = new LinkedList();

   public void add(Klant klant){
    ..null check
    ..controleer of klant er al in zit.
      _list.add(klant);
   }

   public List getKlanten(){
     return Collections.unmodifiableList(_list);
   }
}

Zo gauw er generics zijn kan het natuurlijk nog veel makkelijker omdat je geen type safe wrapper objecten hoeft te maken. Ik zou wel een eigen class maken als die lijst structuur logica gaat bevatten die niet in standaard in een Collection class zit.

Maar eigelijk is een List structuur niet zo goed, je zou beter een Map structuur kunnen kiezen. De volgorde doet er sowieso niet toe (en bij een list is volgorde wel belangrijk) en je kan dan een key gebruiken om hem te plaatsen, vb:
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
public class KlantMap{

    private Map _klantMap = new HashMap();

    public void add(Klant klant){
        if(klant == null){
            throw new NullPointerException("klant can`t be null");
        }
        
        if(_klantMap.containsKey(new Integer(klant.getId()))){
            throw new IllegalArgumentException("klant"+klant+" already in klantMap");
        }
        
        _klantMap.put(new Integer(klant.getId()),klant); 
    }

    public void getKlant(int id){
        return (Klant)_klantMap.get(new Integer(id));
    }

    public Map getKlanten(){
        return COllections.unmodifiableMap(_klantMap); 
    }
}

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

Alarmnummer

-= Tja =-

En als je met Swing gaat werken, dan kan je het beste ook gaan werken met het model object van het gui element.

Verwijderd

Op vrijdag 07 juni 2002 14:27 schreef Alarmnummer het volgende:
Je kan het beste geen array gebruiken omdat je dan vastzit [...]
Wat is er mis met 'n Vector?

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op vrijdag 07 juni 2002 15:02 schreef webskipper het volgende:

[..]

Wat is er mis met 'n Vector?
Wat er mis is met een Vector? Nou hij is Synchronized en dat hebben we 99% van de tijd helemaal niet nodig :) Lekker ArrayList of iets anders gebruiken.

Maar Alarmnummer is nou eenmaal een fan van Linked Lists. En dat kan in dit geval ook heel goed wel, omdat je toch geen random access nodig hebt (alleen een ennumeratie)

Echter wat hij vertelt over de Map is ook meer dan waar :)
Conclusie: Je moet gewoon niet te pas en onpas een vector gebruiken. De Java collections bieden veeeeel meer :+
Pagina: 1