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.
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
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... :)
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
21. oktober 2009 - 15:19
#4
Tusind tak for svaret... Du har været en stor hjælp... Points er afsendt :)
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 {
21. oktober 2009 - 22:59
#6
System.out.printf("Dit BMI tal er: %.2f\n", bmi);
burde også løse afrundings problemet.
Kurser inden for grundlæggende programmering