import java.util.
Scanner;
public class Main {
static class BmiCalculadora {
double peso;
double altura;
public BmiCalculadora(double peso, double altura) {
this.peso = peso;
this.altura = altura;
}
public double calcularImcImperial() {
return (peso / (altura * altura)) * 703;
}
public double calcularImcMetric() {
return peso / (altura * altura);
}
public static String classificarImc(double imc) {
if (imc < 18.5) {
return "Abaixo do peso";
} else if (imc < 24.9) {
return "Peso normal";
} else if (imc < 29.9) {
return "Sobrepeso";
} else {
return "Obesidade";
}
}
}
static class EntradaUsuario {
static Scanner scanner = new Scanner(System.in);
public static String obterSistemaIMC() {
String sistema;
do {
System.out.print("Escolha o sistema de medida (Imperial ou
Métrico): ");
sistema = scanner.nextLine().trim().toLowerCase();
if (!sistema.equals("imperial") && !sistema.equals("métrico") && !
sistema.equals("metrico")) {
System.out.println("Sistema inválido! Digite 'Imperial' ou
'Métrico'.");
}
} while (!sistema.equals("imperial") && !sistema.equals("métrico") && !
sistema.equals("metrico"));
return sistema;
}
public static double obterPeso(String sistemaIMC) {
double peso;
do {
if (sistemaIMC.equals("imperial")) {
System.out.print("Informe o peso em libras: ");
} else {
System.out.print("Informe o peso em quilogramas: ");
}
while (!scanner.hasNextDouble()) {
System.out.println("Valor inválido! Digite um número válido.");
scanner.next();
}
peso = scanner.nextDouble();
scanner.nextLine();
if (peso <= 0) {
System.out.println("Peso deve ser maior que zero.");
}
} while (peso <= 0);
return peso;
}
public static double obterAltura(String sistemaIMC) {
double altura;
do {
if (sistemaIMC.equals("imperial")) {
System.out.print("Informe a altura em polegadas: ");
} else {
System.out.print("Informe a altura em metros: ");
}
while (!scanner.hasNextDouble()) {
System.out.println("Valor inválido! Digite um número válido.");
scanner.next();
}
altura = scanner.nextDouble();
scanner.nextLine();
if (altura <= 0) {
System.out.println("Altura deve ser maior que zero.");
}
} while (altura <= 0);
return altura;
}
}
public static void main(String[] args) {
System.out.println("=== Calculadora de IMC ===");
String sistema = EntradaUsuario.obterSistemaIMC();
double peso = EntradaUsuario.obterPeso(sistema);
double altura = EntradaUsuario.obterAltura(sistema);
BmiCalculadora calculadora = new BmiCalculadora(peso, altura);
double imc;
if (sistema.equals("imperial")) {
imc = calculadora.calcularImcImperial();
} else {
imc = calculadora.calcularImcMetric();
}
System.out.printf("Seu IMC é: %.2f\n", imc);
System.out.println("Classificação: " + BmiCalculadora.classificarImc(imc));
}
}