Spørgsmål vedr. opgaven Java6greenspun.com : LUSENET : Grundlæggende Programmering F2001 : One Thread |
Jeg har løst opgaven Java6, og vil gerne vide om der er en øvre grænse for hvor store tal man kan indtaste. Ihvertfald kommer programmet med en fejlmelding, hvis jeg indtaster urealistiske høje værdier på vægt og højde! Og et sidste spørgsmål: Kunne det have betalt sig at bruge en square funktion i begregningen, eller er der en helt anden logisk måde, jeg har overset? Programmet følger nedenfor:// Thomas Lynge, thomaslynge@it-c.dk // Opgave Java6
public class Java6 { public static void main(String[] args) { int vægt = Integer.parseInt(args[0]); int højde = Integer.parseInt(args[1]); System.out.println("Din vægt er: " + vægt + " kg."); System.out.println("Din højde er: " + højde + " cm."); double bmi = vægt/((højde/100)*(højde/100)); System.out.println("Din BMI er: " + bmi); if (bmi>=20 && bmi<=25) System.out.println("Din BMI er normal!"); if (bmi<20) System.out.println("Din BMI er for lav!"); if (bmi>25) System.out.println("Din BMI er for høj!");
} }
-- Thomas Lynge (thomaslynge@it-c.dk), February 06, 2001
Jeg kan ikke lige se hvorfor programmet skulle komme med en fejlmelding, med mindre du indtaster så store tal at de ikke kan repræsenteres som int.Du kunne med fordel have brugt en square-metode.
Men det største problem er nok at du laver heltalsdivision i højde/100, med den konsekvens at alle højder mellem 100 og 199 cm regnes for ens! Divider i stedet med 100.0 for at få flydendetalsdivision.
-- Peter Sestoft (sestoft@dina.kvl.dk), February 06, 2001.