Toon posts:

[Java] Probleem met ArrayList

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

Verwijderd

Topicstarter
Beste mensen,

Voor een project op school ben ik bezig om in Java een simpele 'bank' te maken. Dat wil zeggen: rekening aanmaken, geld overstorten, saldo opvragen, geld opnemen, etc.etc.

Nu heb ik de volgende code:

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import java.util.*;
import java.util.ArrayList;   

public class Bankrekening
{
    /**
     * De velden waarin de klantengegevens worden opgeslagen
     */
    private String naam;
    private int rekeningnummer;
    private int saldo;
    private ArrayList banklijst;
 
  // Gegevens opgeven
 public void bankrekeningen()
{

banklijst = new ArrayList();
banklijst.add(new Bankrekening(naam, rekeningnummer));
}



  // Geeft de inhoud van het veld naam
  public String getNaam()
   {
      return naam;
   }

  // Geeft de inhoud van het veld rekeningnummer
  public int getRekeningnummer()
   {
       return rekeningnummer;
   }

  // Geeft de inhoud van het veld saldo
  public int getSaldo()
    {
        return saldo;
    }

  // Stort een bedrag op de rekening
  public void bedragStort(int bedrag)
    {
        saldo = saldo + bedrag;
    }
 
  // Neem een bedrag op van de rekening
  public void neemOp(int bedrag)
    {
        if(bedrag > saldo) {
        }
        else {
           saldo = saldo - bedrag;
        }
    }

  /** Stort rente op de rekening van de klant, mits het rentepercentage
   * groter is dan 0 en kleiner is dan 101
   */
  public void geefRente(int rentepercentage)
    {
        if((rentepercentage > 0) && (rentepercentage < 101)) {
        saldo = rentepercentage * saldo / 100 + saldo;
        }
       
    }
 
  // Een bedrag overschrijven naar een andere rekening
  public void schrijfOver(int bedrag, Bankrekening x)
   {
       if(bedrag < saldo) {
           neemOp(bedrag);
           x.bedragStort(bedrag);
      }
   }
}


Naar mijn inzien is deze code goed, maar na een compile-opdracht krijg ik de volgende melding:

Afbeeldingslocatie: http://home.zonnet.nl/samplonius/foutmelding.jpg

Deze foutmelding valt bij mij in de categorie 'vaag'. Als ik de melding bekijk zou ik geen klasse Bankrekening hebben, maar die heb ik wel degelijk. Wat zou er loos kunnen zijn?

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 18:07

Robtimus

me Robtimus no like you

De fout zit niet in de ArrayList, maar in het Object dat je creeert: je Bankrekening heeft geen constructor die een String en int als parameters heeft. Sterker nog, er is alleen de parameterloze default constructor.

Edit: de foutmelding zelf zegt dat je class Bankrekening niet gevonden kan worden in je class Bank. Wordt die wel geimporteerd? En staat je classpath goed?

[ Voor 28% gewijzigd door Robtimus op 26-09-2004 19:08 ]

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • Tootoo
  • Registratie: Augustus 2003
  • Laatst online: 29-08-2025

Tootoo

Folding extremist

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.*;
import java.util.ArrayList;   

public class Bankrekening
{
    /**
     * De velden waarin de klantengegevens worden opgeslagen
     */
    private String naam;
    private int rekeningnummer;
    private int saldo;
    private ArrayList banklijst;
 
  // Gegevens opgeven
 public void bankrekeningen()
{

banklijst = new ArrayList();
banklijst.add(new Bankrekening(naam, rekeningnummer));
}


import java.util.ArrayList; --> die mag weg, je importeert namelijk al alles van java.util;

public void bankrekeningen() --> moet public void Bankrekening() worden. Wat er hier boven al gezegd werd: je hebt geen constructor :) Hopelijk werkt het nu wel.

Folding@home


Verwijderd

Maak daar gewoon van:


public void bankrekeningen(String naam, int reknr)
{
naam = this.naam;
reknr = rekeningnr;

banklijst = new ArrayList();
banklijst.add(new Bankrekening(naam, rekeningnummer));
}

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 18:07

Robtimus

me Robtimus no like you

Ik hoop niet dat je dit bedoelt:
Java:
1
2
3
4
5
6
7
8
public Bankrekening(String naam, int reknr)
{
    naam = this.naam;
    reknr = rekeningnr;

    banklijst = new ArrayList();
    banklijst.add(new Bankrekening(naam, rekeningnummer));
}
Want dat is een beetje eeuwige recursie ;)

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 18:07

Robtimus

me Robtimus no like you

Tootoo schreef op 26 september 2004 @ 19:10:
public void bankrekeningen() --> moet public void Bankrekening() worden.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Verwijderd

Topicstarter
Bedankt jongens. Ga even verder puzzelen, wil het niet dan kom ik er wel weer op terug.

Verwijderd

Topicstarter
Heb nu dit:

code:
1
2
3
4
5
6
7
8
public Bankrekening(String naam, int reknr)
{
naam = this.naam;
reknr = rekeningnummer; 
    
banklijst = new ArrayList();
banklijst.add(naam, rekeningnummer);
}


Maar blijf dezelfde melding houden. Iets in mij zegt dat het ergens heel anders aan ligt, maar hij blijft melding geven dat

code:
1
banklijst.add(naam, rekeningnummer);
hier wat mis mee is.

  • RSchellhorn
  • Registratie: Augustus 2001
  • Laatst online: 22-05 17:48
Een ArrayList heeft ook geen add(String, int) methode:

Documentatie

Als je dit bedoeld:
Java:
1
banklijst.add(new Bankrekening(naam, rekeningnummer));


Dan zou ik deze regel eens proberen om te draaien:
Java:
1
2
3
reknr = rekeningnummer;
// Dus:
rekeningnummer = reknr;

:)

PS: Mag ik vragen wat je wil bereiken door een object te instantieren en vervolgens een nieuw object aan de lijst toe te voegen?
Of lees ik het nu heel krom. :?

Edit:
Denk dat je dit bedoelt?
Java:
1
banklijst.add(this);

[ Voor 74% gewijzigd door RSchellhorn op 26-09-2004 20:07 ]

"Ik heb zo veel soep gegeten, dat kan een mens niet aan. Ik heb zo veel soep gegeten, kan bijna niet meer staan. Ik zat daar maar te slurpen achter die grote kop en als ik bijna klaar was, dan schepten ze weer op!" (Hans Teeuwen)


  • Stimpy001
  • Registratie: Maart 2000
  • Laatst online: 16-09-2025
Ik kan mij ook nog een opdracht herinneren in Java waarbij wij ook een simpele bank moesten implementeren in Java. Dit was op de HIO in Enschede. Zoals ik er nu naar kijk maak je een aantal fouten waardoor ik denk dat je het probleem toch beter moet analyseren.

Ik zou gaan voor een class Bank, class Rekening en een class Rekeninghouder. De class Bank bevat dan een set van rekeningen en een set van rekeninghouders. Een rekening heeft een rekeningnummer, saldo, kredietlimiet, verhogingsbedrag en verlagigingsbedrag. Een rekeninghouder heeft een naam, contanten, een rekening, bedrag en kredietlimiet.

Mocht je meer uitleg nodig hebben, ik kan het altijd geven

Java:
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
51
52
class Bank {
 public static void main(String[] args) {
 
 Rekening rekening1, rekening2;
 Rekeninghouder a, b;

 Set rekeningen = new Set();
 Set rekeninghouders = new Set();

 rekening1 = new Rekening(1234);
 rekeningen.put(rekening1);
 rekening2 = new Rekening(9876);
 rekeningen.put(rekening2);

 a = new Rekeninghouder("a", 1000);
 rekeninghouders.put(a);
 b = new Rekeninghouder("b", 2000);
 rekeninghouders.put(b);

 a.open(rekening1);
 b.open(rekening2);
 }
}

class Rekening {
 private int rekeningnummer;
 private int saldo;
 private int kredietlimiet;
 private int verhogingsbedrag;
 private int verlagingsbedrag;

 public Rekening (int hetRekeningNummer) {
    rekeningnummer = hetRekeningNummer;
 }
}

class Rekeninghouder {
 private String naam;
 private int contanten;
 private Rekening rekening;
 private int bedrag;
 private int kredietlimiet;

 public Rekeninghouder (String deNaam, int deContanten) {
   naam = deNaam;
   contanten = deContanten;
 }

 public void open (Rekening deRekening) {
   rekening = deRekening;
 }
}

[ Voor 48% gewijzigd door Stimpy001 op 26-09-2004 20:34 ]

Wat jij vergeten bent, hoeft voor mij geen spoed te zijn.


Verwijderd

Verwijderd schreef op 26 september 2004 @ 19:51:
Heb nu dit:

code:
1
2
3
4
5
6
7
8
public Bankrekening(String naam, int reknr)
{
naam = this.naam;
reknr = rekeningnummer; 
    
banklijst = new ArrayList();
banklijst.add(naam, rekeningnummer);
}


Maar blijf dezelfde melding houden. Iets in mij zegt dat het ergens heel anders aan ligt, maar hij blijft melding geven dat

code:
1
banklijst.add(naam, rekeningnummer);
hier wat mis mee is.
naam = this.naam;

Je pakt hier de doorgeven waarde parameter naam en die vervang je door de variable naam van de klasse. Oftewel er gebeurt niets.

  • bodiam
  • Registratie: December 2001
  • Laatst online: 31-12-2024
misschien bedoelt ie:

Java:
1
this.naam = naam;


;)

ps, hetzelfde geld voor 'reknr'. Staat ook verkeerd om.

[ Voor 30% gewijzigd door bodiam op 27-09-2004 09:13 ]

Pagina: 1