Java, Error #: 553

Pagina: 1
Acties:
  • 80 views sinds 30-01-2008

  • Beyond
  • Registratie: Juni 2001
  • Laatst online: 16-09 21:06

Beyond

Dussssss.......

Topicstarter
Ik krijg de volgende error :

"Inkomstenbelasting.java": Error #: 553 : variable schijf1 might not have been initialized at line 123, column 26

programma stukje :


private float berekenInkomstenBelasting(float belastbareSom) {

float schijf1;
float schijf2;
float schijf3;
float schijf4;


if (belastbareSom <= 15000) {
schijf1 = belastbareSom * 0.3575f;
if (belastbareSom >= 15001 && belastbareSom <= 48175) {
schijf2 = (belastbareSom - 15000) * 0.3705f;
if (belastbareSom >= 48176 && belastbareSom <= 105954) {
schijf3 = (belastbareSom - 48175) * 0.5f;
if (belastbareSom > 105955){
schijf4 = (belastbareSom - 105954) * 0.6f;

}
}
}
}

inkomstenBelasting = schijf1 + schijf2 + schijf3 + schijf4;

return inkomstenBelasting;
}

Al het goeie.......


  • MisterData
  • Registratie: September 2001
  • Laatst online: 07-09 20:23
je moet float schijf1; veranderen in float schijf1 = 0;

Volgens mij werkt het dan wel ;)

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
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
private float berekenInkomstenBelasting(float belastbareSom) {

    float schijf1;
    float schijf2;
    float schijf3;
    float schijf4;


    if (belastbareSom <= 15000)
    {
      schijf1 = belastbareSom * 0.3575f;
      if (belastbareSom >= 15001 && belastbareSom <= 48175)
      {
        schijf2 = (belastbareSom - 15000) * 0.3705f;
        if (belastbareSom >= 48176 && belastbareSom <= 105954)
        {
            schijf3 = (belastbareSom - 48175) * 0.5f;
            if (belastbareSom > 105955)
            {
              schijf4 = (belastbareSom - 105954) * 0.6f;
            }
        }
      }
    }

    inkomstenBelasting = schijf1 + schijf2 + schijf3 + schijf4;

    return inkomstenBelasting;
}

Ok, denk even zelf na. Wat gebeurt er als je belastbare som groter is dan 15000?
Dan valt ie over al je if's heen en is tie inderdaad niet geinitialiseerd. (net als schijf 2, 3 en 4.

Enne, ik zou nog is goed gaan kijken naar je implementatie. Want het belasting tarief van schijf 1 geld alleen voor het bedrag tot en met 15000.

Stel dat je 15500 piek hebt als belastbare som. Dan valt de eerste 15000 onder het belansting percentage 35.75 procent.
Over de overige 500 moet je dan 37.05 procent belasting betalen.

Zoals jij het geimplementeerd hebt zou in het geval van 15500 de volgende belasting betaald worden: (15500 * 35.75) + (15500 * 0.3705)

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
Op donderdag 15 november 2001 20:32 schreef MisterData het volgende:
je moet float schijf1; veranderen in float schijf1 = 0;

Volgens mij werkt het dan wel ;)
Ja het werkt wel, maar het klopt nog voor geen meter :P

  • MisterData
  • Registratie: September 2001
  • Laatst online: 07-09 20:23
Jah weet ik, was een beetje een Quick+Dirty oplossing die ik (helaas) te vaak gebruik ;) Maar idd, wat je zegt klopt wel. Hetzelfde geldt voor try {} catch(){} blokken daar moet je ook in de catch een var initialiseren als dat in de try is mislukt.

  • Beyond
  • Registratie: Juni 2001
  • Laatst online: 16-09 21:06

Beyond

Dussssss.......

Topicstarter
Hoe moet ik het dan doen ?

Al het goeie.......


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

duidelijk geval van mijn nog eens overlezen, de variabele zou op het einde wel eens geen waarde kunnen hebben. Om dat te voorkomen moeten je hem voor alle if's een waarde geven.

voor de rest: lees de tutorial op java.sun.com
Pagina: 1

Dit topic is gesloten.