connais Skrevet 8. juni 2016 Del Skrevet 8. juni 2016 Holder på med en oppgave fra en lærebok, men sitter helt fast. Man skal lage en BMI-kalkulator som tar utgangspunkt i regnestykket: BMI = weightInKilograms / (heightInMeters × heightInMeters) Man skal kun bruke enkle metoder som har blitt lært i kapittelet. Tror det skjærer seg siden man må endre fra høyde i cm til høyde i meter. Har søkt etter svar, men finner kun måter som er for avanserte. Fant også en fasit til oppgaven, men den gjelder for inches og pounds hvor konverteringsproblemet ikke oppstår. Har prøvd mye forskjellig, men får det ikke til... Har prøvd flere måter å skrive regnestykket på, men virker som at hvis jeg prøver å gjøre cm om til meter deles feks 170 / 10 til å være 1.... Her er et av mine feilede forsøk: import java.util.Scanner; public class BMI { public static void main(String[] args) { Scanner input = new Scanner(System.in); int weight; int height; int bMI; System.out.print("Enter your weight in kg: "); weight = input.nextInt(); System.out.print("Enter your height in cm: "); height = input.nextInt(); bMI = (weight / (height * height)) * 10000; System.out.printf("Your bmi is %d\n\n", bMI); System.out.println("BMI VALUES"); System.out.println("Underweight: less than 18.5"); System.out.println("Normal: between 18.5 and 24.9"); System.out.println("Overweight: between 25 and 24.9"); System.out.println("Obese: 30 or greater"); } } Antar at man egentlig ikke kan bruke int i utregningen, men har prøvd å legge inn float feks, og får da konverteringsfeil ved kjøring av programmet. Kan også legge ved inches/pounds-fasiten: import java.util.Scanner; public class Ex02_33 { public static void main (String [] args) { Scanner input = new Scanner (System.in); int weight; int height; int bMI; System.out.print ("Enter Your Weight in Pounds: "); weight = input.nextInt(); System.out.print ("Enter Your Height in Inches: "); height = input.nextInt(); bMI = (weight * 703) / (height * height); System.out.printf ("Your Body Mass Index (BMI) is %d\n\n", bMI); System.out.println ("BMI VALUES"); System.out.println ("Underweight: less than 18.5"); System.out.println ("Normal: between 18.5 and 24.9"); System.out.println ("Overweight: between 25 and 29.9"); System.out.println ("Obese: 30 or greater"); } } Lenke til kommentar
frustrert_97 Skrevet 8. juni 2016 Del Skrevet 8. juni 2016 Er det ikke bare å be bruker å skrive inn høyde i cm? Det er da vanlig å oppgi som heltall. Vekten kan være Number, da det er enklere å få en nøyaktig verdi på det. Når det gjelder kodingen så har jeg arbeidet i Flash så kan nok ikke hjelpe noe særlig med den biten. Er det noe feil som hindrer programmet i å kjøre, eller får du skrevet ut feil verdier? Er greit å teste med variabler der du vet hvilken verdi som skal skrives ut. Lenke til kommentar
connais Skrevet 8. juni 2016 Forfatter Del Skrevet 8. juni 2016 Er det ikke bare å be bruker å skrive inn høyde i cm? Det er da vanlig å oppgi som heltall. Vekten kan være Number, da det er enklere å få en nøyaktig verdi på det. Når det gjelder kodingen så har jeg arbeidet i Flash så kan nok ikke hjelpe noe særlig med den biten. Er det noe feil som hindrer programmet i å kjøre, eller får du skrevet ut feil verdier? Er greit å teste med variabler der du vet hvilken verdi som skal skrives ut. Høyden skrives inn i cm, men regnestykket er i meter... så da må jeg vel omregne det til meter? Får feil verdier, avhengig av hva jeg har gjort får jeg enten 1 eller vekten tilbake... Bruker verdier jeg vet svaret på. Hvis koden skrives feil kan jeg også få feilmelding om konverteringsproblemer feks. Når jeg prøver å bruke float istedenfor int. Lenke til kommentar
frustrert_97 Skrevet 8. juni 2016 Del Skrevet 8. juni 2016 1. height må være av typen Number 2. height = input.nextInt() / 100 Om du velger int så vil programmet runde høyden ned, og du får derfor høyden som 1 meter, og svaret blir da vekten. Lenke til kommentar
Drogin Skrevet 8. juni 2016 Del Skrevet 8. juni 2016 (endret) Får du lov å bruke double eller BigDecimal? Sistnevnte er kanskje litt for komplisert på et begynnerstadium. Bruker du double istedenfor integers, skjer det ingen avskjæring til heltall. Bruker du f.eks double, så må du også bruke input.nextDouble() istedenfor int. Du bør også da la bmi-variabelen være double også. Videre må da også da huske på å forandre på printf-funksjonen din, til å bruke %f istedenfor %d. Endret 8. juni 2016 av Drogin Lenke til kommentar
nightowl Skrevet 8. juni 2016 Del Skrevet 8. juni 2016 (endret) EDIT: La til kode som tekst. public class BMI { public static void main(String[] args) { if (args.length == 2) { double vekt = Double.parseDouble(args[0]); double hoyde = Double.parseDouble(args[1]); System.out.printf("BMI: %.1f", (vekt/(hoyde*hoyde)) ); } else { System.out.println("Riktig bruk: java BMI <vekt i kilo> <hoyde i meter>'"); } } } Endret 8. juni 2016 av nightowl Lenke til kommentar
connais Skrevet 8. juni 2016 Forfatter Del Skrevet 8. juni 2016 Får du lov å bruke double eller BigDecimal? Sistnevnte er kanskje litt for komplisert på et begynnerstadium. Bruker du double istedenfor integers, skjer det ingen avskjæring til heltall. Bruker du f.eks double, så må du også bruke input.nextDouble() istedenfor int. Du bør også da la bmi-variabelen være double også. Videre må da også da huske på å forandre på printf-funksjonen din, til å bruke %f istedenfor %d. Double har blitt nevnt hvertfall, og henvist til et appendix, så det er godt mulig. Satte inn double som variabler, og det fungerte Tusen takk! Lenke til kommentar
connais Skrevet 8. juni 2016 Forfatter Del Skrevet 8. juni 2016 EDIT: La til kode som tekst. public class BMI { public static void main(String[] args) { if (args.length == 2) { double vekt = Double.parseDouble(args[0]); double hoyde = Double.parseDouble(args[1]); System.out.printf("BMI: %.1f", (vekt/(hoyde*hoyde)) ); } else { System.out.println("Riktig bruk: java BMI <vekt i kilo> <hoyde i meter>'"); } } } Takk for forslag, men tror det blir litt for komplisert med disse doubleparse-greiene, har ikke vært borti det. Men funket med double Lenke til kommentar
nightowl Skrevet 9. juni 2016 Del Skrevet 9. juni 2016 Takk for forslag, men tror det blir litt for komplisert med disse doubleparse-greiene, har ikke vært borti det. Men funket med double Å hente ut tall fra tekst er veldig grunnleggende. Så hvis du ikke har lært om dette allerede bør du gjøre det i nær fremtid. Lenke til kommentar
connais Skrevet 9. juni 2016 Forfatter Del Skrevet 9. juni 2016 Takk for forslag, men tror det blir litt for komplisert med disse doubleparse-greiene, har ikke vært borti det. Men funket med double Å hente ut tall fra tekst er veldig grunnleggende. Så hvis du ikke har lært om dette allerede bør du gjøre det i nær fremtid. Ah, da kommer det sikkert snart i boken Det har ikke vært i dette kapittelet, og da kunne man ikke bruke det i oppgaven om du skjønner Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå