Avatar billede hitmanfreak Nybegynder
21. oktober 2009 - 12:11 Der er 5 kommentarer og
1 løsning

Hjælp med Java...

Hej.

Jeg er i gang med at skrive en opgave, i programmering. Programmet går i alt enkel hed ud på at man indtaster sin højde og vægt, derefter får du ad vide hvad din BMI er. Så langt så godt, det virker. Men nedenunder skal den skriver om man er undervægtig, normal, overvægtig osv. Det er her det går galt. Den skriver nemlig kun at man er normal vægtig, selvom jeg har indtaste at jeg var 190 høj og vejede 200kg  mener den stadig at det er normal...

Håber noget af jeg kan hjælpe mig, jeg har skrevet min kode nedenunder her:

import java.util.*;
public class bmi {
       
   
    public bmi() {
    }
   
 
    public static void main(String[] args) {
        Scanner tastatur = new Scanner (System.in);
       
        double v;
        double bmi;
        double h;
        double h2;
        double fk;
       
        fk=100;
       
        System.out.println("Højde");
        h = tastatur.nextInt();
       
        h2=h/fk;
       
        System.out.println("Vægt");
        v = tastatur.nextInt();
       
        bmi=v/(h2*h2);
       
        System.out.println("Dit BMI tal er:" + bmi);
       
       
        if (bmi<18.5)
            System.out.println("Du er undervægtig");   
        else if (bmi>18)
            System.out.println("Du er normal vægtig");       
        else if (bmi>25)
            System.out.println("Du er let overvægtig");   
        else if (bmi>30)
            System.out.println("Du er overvægtig");       
        else if (bmi>40)
            System.out.println("Du er svært overvægtig");   
       
    }
}


Jeg håber at nogen af jer kan hjælpe mig med det... På forhånd mange tak.
Avatar billede europe Nybegynder
21. oktober 2009 - 12:21 #1
Der skal lige laves lidt om på if sætningen

    if (bmi<18.5)
            System.out.println("Du er undervægtig");   
        else if (bmi>18 && bmi <= 25)
            System.out.println("Du er normal vægtig");       
        else if (bmi>25 && bmi <= 30)
            System.out.println("Du er let overvægtig");   
        else if (bmi>30 && bmi <= 40)
            System.out.println("Du er overvægtig");       
        else if (bmi>40)
            System.out.println("Du er svært overvægtig");   
       
    }

grundet ellers rammer du altid bmi over 18
Avatar billede hitmanfreak Nybegynder
21. oktober 2009 - 13:59 #2
Tusind tak for det utrolig hurtige svar :) Nu virker det jo :)

Kan jeg være så flabet og stille dig et spørgsmål mere?

Jeg ved der er en måde at formatere tallet på så den kun giver fx to tal efter komma. Men hver gang jeg prøver at taste den ind giver den mig fejl?

Det jeg skriver er:

System.out.println("Dit BMI tal er: %.5f" + bmi);

Hvad gør jeg forkert?

Igen mange tak for svaret... :)
Avatar billede europe Nybegynder
21. oktober 2009 - 14:28 #3
Kan gøres sådan her.

import java.math.BigDecimal;

BigDecimal bd = new BigDecimal(String.valueOf(bmi));
System.out.println("Dit BMI tal er:" + bd.setScale(2,BigDecimal.ROUND_HALF_UP));

Så vil du få den med 2 decimaler og afrundingen skulle også være rigtig
Avatar billede hitmanfreak Nybegynder
21. oktober 2009 - 15:19 #4
Tusind tak for svaret... Du har været en stor hjælp... Points er afsendt :)
Avatar billede werd Nybegynder
21. oktober 2009 - 18:00 #5
Husk at lukke scanneren igen:

tastatur.close();

Og så er det god skik at starte med stort nogstav i klassenavne:

public class Bmi {
Avatar billede arne_v Ekspert
21. oktober 2009 - 22:59 #6
System.out.printf("Dit BMI tal er: %.2f\n", bmi);

burde også løse afrundings problemet.
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