Avatar billede s0mmer Nybegynder
12. november 2006 - 21:42 Der er 20 kommentarer og
1 løsning

if sætning

Hej eksperter,
Er igang med en lille bmi applet. Den er mere eller mindre færdig, men jeg skal lige have lavet sådan at den fortæller brugeren hvilket interval de ligger indenfor. Her er udtræk fra koden:

    public void actionPerformed(ActionEvent e) {
        Object obj=e.getSource();
        if (obj==knap){
            try {
                vaegt=Double.parseDouble(vaegt_input.getText());
                hoejde=Double.parseDouble(hoejde_input.getText());
                bmi= vaegt/(hoejde*hoejde);
                bmi_input.setText(""+bmi);
                    if (vaegt_input.getText()<==18){
                    vaegtklasse.setText("Vejer for lidt");
                    }
                    else if (vaegt_input.getText()>==18 & <==25){
                    vaegtklasse.setText("Passende vægt");
                    }
                    else if (vaegt_input.getText()>==25 & <==30){
                    vaegtklasse.setText("Vejer for meget");
                    }
                    else if (vaegt_input.getText()>==30){
                    vaegtklasse.setText("Overvægtig");
                    }
            }    catch (NumberFormatException n) {
            }
        }
    }
   

Og den egentlig fejl ligger i :

                    if (vaegt_input.getText()<==18){
                    vaegtklasse.setText("Vejer for lidt");
                    }
                    else if (vaegt_input.getText()>==18 & <==25){
                    vaegtklasse.setText("Passende vægt");
                    }
                    else if (vaegt_input.getText()>==25 & <==30){
                    vaegtklasse.setText("Vejer for meget");
                    }
                    else if (vaegt_input.getText()>==30){
                    vaegtklasse.setText("Overvægtig");
                    }

Hvad er fejlen? Det kan godt være hele if sætningen skal placeres anderledes.. Jeg er ikke så meget inde i java endnu.
Avatar billede mikkelbm Nybegynder
12. november 2006 - 21:45 #1
Du har et lighedstegn for meget:

<== skal være <=
Avatar billede s0mmer Nybegynder
12. november 2006 - 21:48 #2
ændret til:
                    if (vaegt_input.getText()<=18){
                    vaegtklasse.setText("Vejer for lidt");
                    }
                    else if (vaegt_input.getText()>=18 & <=25){
                    vaegtklasse.setText("Passende vægt");
                    }
                    else if (vaegt_input.getText()>=25 & <=30){
                    vaegtklasse.setText("Vejer for meget");
                    }
                    else if (vaegt_input.getText()>=30){
                    vaegtklasse.setText("Overvægtig");
                    }

får stadig fejl.. programmet siger:
illegal start of expression
og
')' expected
Avatar billede _carsten Nybegynder
12. november 2006 - 22:03 #3
if ( Intger.parseInt(vaegt_input.getText()) <=18){

etc.
Avatar billede _carsten Nybegynder
12. november 2006 - 22:03 #4
Prøver lige igen

if ( Integer.parseInt(vaegt_input.getText()) <=18){

etc.
Avatar billede mikkelbm Nybegynder
12. november 2006 - 22:05 #5
Og du mangler også et &-tegn.

if ( Intger.parseInt(vaegt_input.getText()) <=18 && ...){
Avatar billede _carsten Nybegynder
12. november 2006 - 22:07 #6
Så er den der vist

if ( Integer.parseInt( vaegt_input.getText() ) <= 18){
    vaegtklasse.setText("Vejer for lidt");
}
else if (Integer.parseInt( vaegt_input.getText() ) >= 18 && Integer.parseInt( vaegt_input.getText() ) <=25){
    vaegtklasse.setText("Passende vægt");
}
else if (Integer.parseInt( vaegt_input.getText() ) >= 25 && Integer.parseInt( vaegt_input.getText() ) <=30){
    vaegtklasse.setText("Vejer for meget");
}
else if (Integer.parseInt( vaegt_input.getText() ) >= 30){
    vaegtklasse.setText("Overvægtig");
}
Avatar billede s0mmer Nybegynder
12. november 2006 - 22:08 #7
jeg får ingen fejl, men jeg får heller ik udskrevet noget i tekstfeltet "vaegtklasse".. måske skal vaegt_input.getText()) ændres til "bmi" kun.. men så skal  Integer.parseInt ændres, ikke sandt? Har i nogle forslag..
Avatar billede _carsten Nybegynder
12. november 2006 - 22:14 #8
Har du testet om din actionPerformed(ActionEvent e) metode afvikles ??
Avatar billede s0mmer Nybegynder
12. november 2006 - 22:14 #9
altså det er som om den ikke kan læse fra hvad der er blevet udskrevet i inputfeltet.. så derfor skal vi måske have værdien fra selve udregningen.. dvs.

bmi= vaegt/(hoejde*hoejde);

men hvordan får vi tilpasset if ( Integer.parseInt( vaegt_input.getText() ) <= 18){
til at tage fra "bmi"
Avatar billede s0mmer Nybegynder
12. november 2006 - 22:14 #10
carsten - den må blive afviklet, for den udskriver fint bmi tallet
Avatar billede _carsten Nybegynder
12. november 2006 - 22:18 #11
Dette er jo egentlig en mere fornuftigt måde at gøre det


int input = Integer.parseInt( vaegt_input.getText() );

if ( input <= 18){
    vaegtklasse.setText("Vejer for lidt");
}
else if (input > 18 && input <=25){
    vaegtklasse.setText("Passende vægt");
}
else if (input > 25 && input <=30){
    vaegtklasse.setText("Vejer for meget");
}
else if ( > 30){
    vaegtklasse.setText("Overvægtig");
}
Avatar billede _carsten Nybegynder
12. november 2006 - 22:19 #12
Copy / paste problem i sidste if!

else if ( input > 30){
    vaegtklasse.setText("Overvægtig");
}
Avatar billede s0mmer Nybegynder
12. november 2006 - 22:20 #13
carsten - meget nemmere måde at stille det op ja, men vi har stadig ik løst problemet som jeg lige fik beskrevet.
Avatar billede _carsten Nybegynder
12. november 2006 - 22:23 #14
Copy / paste denne - virker under alle omstændigheder

int input = Integer.parseInt( vaegt_input.getText().length() > 0 ? vaegt_input.getText() : 0 );

if ( input <= 18){
    vaegtklasse.setText("Vejer for lidt");
}
else if (input > 18 && input <=25){
    vaegtklasse.setText("Passende vægt");
}
else if (input > 25 && input <=30){
    vaegtklasse.setText("Vejer for meget");
}
else if (input > 30){
    vaegtklasse.setText("Overvægtig");
}
Avatar billede _carsten Nybegynder
12. november 2006 - 22:24 #15
Arghhhhh

int input = Integer.parseInt( vaegt_input.getText().length() > 0 ? vaegt_input.getText() : "0" );
Avatar billede s0mmer Nybegynder
12. november 2006 - 22:25 #16
nu må jeg hellere lige få gjort en ting klar først.. :)

vaegt_input som vi har brugt i eksemplerne var en fejl fra min side.. det er selvfølgelig bmi_input.. vægt_input er bare feltet hvor brugeren indtaster sin vægt..

bmi_input derimod er der hvor det udregnede bmi_tal bliver skrevet til brugeren efter han har trykket på knappen "Beregn"...

og det er dette tal som bliver skrevet i bmi_input vi skal bruge.. og det er som om vores kode ikke gider bruge bmi_input da værdien er noget fra udregningen og ikke noget brugeren har indtastet.. forstår du ?
Avatar billede _carsten Nybegynder
12. november 2006 - 22:28 #17
så skal du jo bare erstatte "input" med bmi
Avatar billede _carsten Nybegynder
12. november 2006 - 22:30 #18
Eks.

if ( bmi <= 18.0){
    vaegtklasse.setText("Vejer for lidt");
}
else if (bmi > 18.0 && bmi <=25.0){
    vaegtklasse.setText("Passende vægt");
}
else if (bmi > 25.0 && bmi <=30.0){
    vaegtklasse.setText("Vejer for meget");
}
else if (bmi > 30.0){
    vaegtklasse.setText("Overvægtig");
}
Avatar billede s0mmer Nybegynder
12. november 2006 - 22:33 #19
og så virker det perfekt.. send svar og du får points :)
Avatar billede _carsten Nybegynder
12. november 2006 - 22:34 #20
Svar
Avatar billede jakoba Nybegynder
13. november 2006 - 14:02 #21
Og en lille ændring for logikkens skyld:

if ( bmi <= 18.0){        // uændret
    vaegtklasse.setText("Vejer for lidt");
}
else if (bmi <=25.0){      // "bmi > 18.0" fjernet for vi VED jo det passer her
    vaegtklasse.setText("Passende vægt");
}
else if (bmi <=30.0){      // "bmi > 25.0" fjernet for vi VED jo det passer her
    vaegtklasse.setText("Vejer for meget");
}
else {                    // "if (bmi > 30.0)" fjernet for vi VED jo det passer her
    vaegtklasse.setText("Overvægtig");
}

mvh JakobA
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester