Gå til innhold

[Løst] Lage BMI-kalkulator med Java


Anbefalte innlegg

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
Videoannonse
Annonse

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

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

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 av Drogin
Lenke til kommentar

MEtWZjVB.jpeg

 

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 av nightowl
Lenke til kommentar

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 :D Tusen takk!

Lenke til kommentar

 

MEtWZjVB.jpeg

 

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

 

 

 

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 :p

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...