Gyakorlati alapok

BMI, azaz soványak és kövérek horrorképlete

 

A BMI rövidítés eredeti jelentése body mass index, másnéven testtömeg index (TTI). A képlet a testtömeg és a testmagasság arányát fejezi ki, amelyből következtetéseket vonhatunk le a tesztszemély testállapotára vonatkozóan:

 

TTI = testtömeg / testmagasság2

TTI = kg / m2

 

A WHO (World Health Organization - Egészségügyi Világszervezet) osztályozása szerint a BMI index a következő besorolásokra alkalmas:

 

www.informatika-programozas.hu - BMI

Forrás - Source: Wikipédia

 

A képlet egészségügyi tartalmát ezen fejezet keretei között nem vitatjuk, jelen feladatunk kizárólag a BMI implementálása a fenti képlet és táblázat alapján. A következő feladataink vannak:

A kiértékeléses résznél első pillantásra kézenfekvő lehet a switch használata, azonban emlékezzünk vissza: a szerkezet double típusú adatot sajnos nem tud fogadni, már pedig a BMI végső értéke legtöbbször ilyen lesz.

 

A BMI double típusú határértékeit és a testsúlyosztályozás String típusú szövegeit külön, állandó méretű tömbökben érdemes eltárolnunk.

 

Nézzük meg a futtatható Java-kódot!

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.util.Scanner;

public class Main {

static double bekeresMagassag(int alsoHatar, int felsoHatar) {
    Scanner scanner = new Scanner(System.in);
    boolean OK;
    int magassag;
    do{
        System.out.println("Kérem, hogy adja meg a testmagasságot (cm)!");
        String input = scanner.nextLine();
        magassag = Integer.parseInt(input);
        OK = magassag >= alsoHatar && magassag <= felsoHatar;
        if(magassag < alsoHatar) System.out.println("Túl kicsi szám. Újra!");
        if(magassag > felsoHatar) System.out.println("Túl nagy szám. Újra!");
    } while(!OK);
    return magassag;
}

static double bekeresTomeg(int alsoHatar, int felsoHatar) {
    Scanner scanner = new Scanner(System.in);
    boolean OK;
    double tomeg;
    do{
        System.out.println("\nKérem, hogy adja meg a testtömeget (kg)!");
        String input = scanner.nextLine();
        tomeg = Double.parseDouble(input);
        OK = tomeg >= alsoHatar && tomeg <= felsoHatar;
        if(tomeg < alsoHatar) System.out.println("Túl kicsi szám. Újra!");
        if(tomeg > felsoHatar) System.out.println("Túl nagy szám. Újra!");
    } while(!OK);
    return tomeg;
}

static double bmi(double tomeg, double magassag) {
    return tomeg / (Math.pow(magassag/100.0, 2));
}

static void ertekeles(double tomeg, double magassag) {
    final double[] BMIHATAR = {16.0, 17.0, 18.5, 25.0, 30.0, 35.0, 40.0};
    final String[] BMISZOVEG = {"súlyosan sovány", "mérsékelten sovány", "enyhén sovány",

        "normál testtúly","túlsúlyos", "I. fokú elhízás", "II. fokú elhízás", "III. fokú, kóros elhízás"};

    double BMI = bmi(tomeg, magassag);
    System.out.print("\nAz Ön BMI indexe: " + BMI + ", azaz az Ön testállapota: ");
    if(BMI < BMIHATAR[0]) System.out.println(BMISZOVEG[0]);
    else if(BMI >= BMIHATAR[0] && BMI < BMIHATAR[1]) System.out.println(BMISZOVEG[1]);
    else if(BMI >= BMIHATAR[1] && BMI < BMIHATAR[2]) System.out.println(BMISZOVEG[2]);
    else if(BMI >= BMIHATAR[2] && BMI < BMIHATAR[3]) System.out.println(BMISZOVEG[3]);
    else if(BMI >= BMIHATAR[3] && BMI < BMIHATAR[4]) System.out.println(BMISZOVEG[4]);
    else if(BMI >= BMIHATAR[4] && BMI < BMIHATAR[5]) System.out.println(BMISZOVEG[5]);
    else if(BMI >= BMIHATAR[5] && BMI < BMIHATAR[6]) System.out.println(BMISZOVEG[6]);
    else System.out.println(BMISZOVEG[7]);
}

public static void main(String[] args) {
    double magassag = bekeresMagassag(20, 220);
    double tomeg = bekeresTomeg(1, 400);
    ertekeles(tomeg, magassag);
    }
}

 

Végeredmény:

Kérem, hogy adja meg a testmagasságot (cm)!
200

Kérem, hogy adja meg a testtömeget (kg)!
100

Az Ön BMI indexe: 25.0, azaz az Ön testállapota: túlsúlyos