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:
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:
-
külön metódusokban kell gondoskodnunk:
-
a 2 db bemeneti adat, a testtömeg és testmagasság bekéréséről, egyúttal érdemes egyszerű alsó-, és felsőhatárokat is beállítani, ugyanakkor vigyáznunk kell a helyes mértékegységekre, hiszen az alapképlet kg / m2-t tartalmaz, viszont célszerűbb a magassági adatokat centiméterben megadni,
-
a BMI kiszámításáról,
-
az egész kiértékeléséről, amely során tehát összevetjük a kapott BMI-értéket a testsúlyosztályozással (például 25 -> túlsúlyos)
-
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!
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