public class IndiceMasaCorporal {
private static final double factorPesoLb = 703.069579639159;
private String clasificacion;
private double peso; // libras
private double estatura; // pulgadas
private double imc;
private boolean existeIMC;
public IndiceMasaCorporal() {
this.clasificacion = "Indefinida";
}
public void setPeso(double peso) {
this.peso = peso;
existeIMC = false;
}
public void setEstatura(double estatura) {
this.estatura = estatura;
existeIMC = false;
}
public double getIndice() {
if (!existeIMC) {
calcularIndice();
}
return imc;
}
public String getClasificacion() {
if (!existeIMC) {
calcularIndice();
}
clasificar();
return clasificacion;
}
private void calcularIndice() {
imc = peso * factorPesoLb / Math.pow(estatura, 2.0);
existeIMC = true;
}
private void clasificar() {
if (imc < 16.0) {
clasificacion = "Delgadez Severa";
} else if (imc >= 16.0 && imc <= 16.99) {
clasificacion = "Delgadez Moderada";
} else if (imc >= 17.00 && imc <= 18.49) {
clasificacion = "Delgadez Aceptable";
} else if (imc >= 18.50 && imc <= 24.99) {
clasificacion = "Peso Normal";
} else if (imc >= 25.00 && imc <= 29.99) {
clasificacion = "Sobrepeso";
} else if (imc >= 30.0 && imc <= 34.99) {
clasificacion = "Obeso Tipo I";
} else if (imc >= 35.0 && imc <= 39.99) {
clasificacion = "Obeso Tipo II";
} else if (imc >= 40.0) {
clasificacion = "Obeso Tipo III";
}
}
}