Toon posts:

[Java] if else constructie?

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

Verwijderd

Topicstarter
Dag mensen! Voor mijn opleiding moet ik Java leren en dat lukt op zich wel aardig, maar nu zit ik met een probleem. De if-else constructie die ik wil maken blijft met wat ik ook probeer de foutmelding te geven dat een sluitende accolade '}' te weinig is... Maar volgens de Perl en PHP kennis die ik heb zou het toch logisch in elkaar moeten zitten:
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
    public int tariefSoort(Graphics g, int maandNummer) {
        if (maandNummer == 1 || maandNummer == 2) {
            g.drawString("Tariefsoort : 1", 50, 70);
            g.drawString("Prijs : 1", 125, 90);
            g.drawString("Prijs : 2", 125, 110);
        }
        else
        if (maandNummer == 3 || maandNummer == 4) {
            g.drawString("Tariefsoort : 2", 50, 70);
            g.drawString("Prijs : 2", 125, 90);
            g.drawString("Prijs : 4", 125, 110);
        }
        else
        if (maandNummer == 5 || maandNummer == 6) {
            g.drawString("Tariefsoort : 3", 50, 70);
            g.drawString("Prijs : 3", 125, 90);
            g.drawString("Prijs : 4", 125, 110);
        }
        else
        if (maandNummer == 7 || maandNummer == 8) {
            g.drawString("Tariefsoort : 4", 50, 70);
            g.drawString("Prijs : 2", 125, 90);
            g.drawString("Prijs : 6", 125, 110);
        }
    }

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 17:52

RayNbow

Kirika <3

Niets mis met de accolades volgens mij. Je mist wel een return statement (de functie moet een int retourneren)... Maar eh, lijkt je een switch statement niet handiger dan deze if-jes?

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

en waarom denk je dat het op die specifieke methode slaat?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • SyphOn
  • Registratie: Juni 2001
  • Laatst online: 19-08 19:52
Hoor elseif niet aan elkaar?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

nee

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 31-03 16:47

CyberSnooP

^^^^ schrijft --->

Je krijgt hoogwaarschijnlijk een fout als:
test.java:25: missing return statement
}
^
1 error

Let vooral op de omschrijving, die maakt het heel duidelijk. Een oplossing is het type van je method in void veranderen.

|_____vakje______|


Verwijderd

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
    public void tariefSoort(Graphics g, int maandNummer) {
        if (maandNummer == 1 || maandNummer == 2) {
            g.drawString("Tariefsoort : 1", 50, 70);
            g.drawString("Prijs : 1", 125, 90);
            g.drawString("Prijs : 2", 125, 110);
        }else{
    
            if (maandNummer == 3 || maandNummer == 4) {
                g.drawString("Tariefsoort : 2", 50, 70);
                g.drawString("Prijs : 2", 125, 90);
                g.drawString("Prijs : 4", 125, 110);
            }else{
                if (maandNummer == 5 || maandNummer == 6) {
                    g.drawString("Tariefsoort : 3", 50, 70);
                    g.drawString("Prijs : 3", 125, 90);
                    g.drawString("Prijs : 4", 125, 110);
                }else{
                    if (maandNummer == 7 || maandNummer == 8) {
                        g.drawString("Tariefsoort : 4", 50, 70);
                        g.drawString("Prijs : 2", 125, 90);
                        g.drawString("Prijs : 6", 125, 110);
                }
            }
        }
        }
    }

met een beetje refactoring kom je tot


code:
1
2
3
4
5
6
7
8
9
10
11
public int berekenPeriode(int maandNummer){
    if (maandNummer%2==0){
        return maandNummer/2;
    }else{
        return maandNummer+1/2;
    }
}
public void tariefSoort(Graphics g, int maandNummer){
    g.drawString("tariefsoort:"+berekenPeriode(maandnummer),50,70);
    //de prijzen per "periode" kan je in een arraysteken en die tonen
}

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 20-08 00:10
Verwijderd schreef op 23 October 2003 @ 23:20:
Java:
1
2
3
4
5
6
7
public int berekenPeriode(int maandNummer){
    if (maandNummer%2==0){
        return maandNummer/2;
    }else{
        return maandNummer+1/2;
    }
}
Doen dan gewoon (maandNummer + 1) / 2; bij integer arithmetic wordt altijd omlaag afgerond.

Het tweede return-statement klopt sowieso niet echt; aangezien deling voor optelling gaat en 1/2 == 0, staat daar feitelijk (maandNummer + 0).

[ Voor 21% gewijzigd door Soultaker op 24-10-2003 00:50 ]


Verwijderd

Soultaker schreef op 24 October 2003 @ 00:47:
[...]

Doen dan gewoon (maandNummer + 1) / 2; bij integer arithmetic wordt altijd omlaag afgerond.

Het tweede return-statement klopt sowieso niet echt; aangezien deling voor optelling gaat en 1/2 == 0, staat daar feitelijk (maandNummer + 0).
Jep, was haakje vergeten bij die tweede return.
Maar die check is toch nodig omdat 3/2 = 1 en 4/2 =2 >> maar ze vallen beide in periode twee.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 20-08 00:10
Verwijderd schreef op 24 October 2003 @ 00:59:
Maar die check is toch nodig omdat 3/2 = 1 en 4/2 =2 >> maar ze vallen beide in periode twee.
Nee hoor, want (3+1)/2 == 4/2 == 2, en (4+1)/2 == 5/2 == 2.

Verwijderd

Soultaker schreef op 24 October 2003 @ 01:06:
[...]

Nee hoor, want (3+1)/2 == 4/2 == 2, en (4+1)/2 == 5/2 == 2.
ok :)
Nu hopen dat de tropicstarter hier wat wijzer is uit geworden

  • esf
  • Registratie: Juni 2002
  • Laatst online: 11-03 14:06

esf

Wat voor foutmelding kreeg je van de Java compiler? En wat zijn de regelnummers van het stukje code dat je hebt gepost? Waarschijnlijk dat je vraag hier dan gemakkelijker beantwoord kan worden..

The hardest thing in the world to understand is the income tax. - Albert Einstein

Pagina: 1