Gostaria de saber porque aparece esta inconsistência no meu resultado do IMC, caso alguém puder me ajudar.
package application;
import java.util.Scanner;
import entities.Paciente;
public class Principal {
public static void main(String[] args) {
try (Scanner ler = new Scanner(System.in)){
double pc, alt;
System.out.printf("Informe o peso corporal (em kg):\n");
pc = ler.nextDouble();
System.out.printf("\nInforme a altura (em metros: 1,77 por exemplo):\n");
alt = ler.nextDouble();
System.out.print("Sexo (1 para 'H' ou 2 outro numero para 'M'): ");
char sexo = (char) ler.nextShort();
Paciente p = new Paciente(alt, pc);
p.alt = alt;
p.pc = pc;
System.out.printf("\nResultados...:\n");
System.out.println("IMC : " +p.calcularIMC());
if (sexo == 1) {
System.out.println("Diagnóstico: " +p.diagnostico());
}
else if (sexo == 2) {
System.out.println("Diagnóstico: " +p.diagnostico());
}
}
}
}
package entities;
public class Paciente {
public double alt;
public double pc;
public double calcularIMC;
public double calcularIMC1;
public Paciente(double alt, double pc) {
this.alt = alt;
this.pc = pc;
}
double getPc() {
return pc;
}
void setPc(double pc) {
this.pc = pc;
}
double getCalcularIMC() {
return calcularIMC;
}
void setCalcularIMC(double calcularIMC) {
this.calcularIMC = calcularIMC;
}
double getCalcularIMC1() {
return calcularIMC1;
}
void setCalcularIMC1(double calcularIMC1) {
this.calcularIMC1 = calcularIMC1;
}
double getAlt() {
return alt; }
double setAlt(double alt) {
return this.alt = alt; }
public double calcularIMC()
{ return (72.7 * this.alt - 58) ; }
public double calcularIMC1()
{ return (62.1 * this.alt - 44.7) ; }
public String diagnostico()
{
if (pc <= (calcularIMC - 2))
return "Abaixo do peso";
else if ((pc > calcularIMC - 2) && (pc < calcularIMC + 2))
return "Peso normal";
else if ((pc >= calcularIMC + 2))
return "Acima do peso";
if (pc <= (calcularIMC1 - 2))
return "Abaixo do peso";
else if ((pc > calcularIMC1 - 2) && (pc < calcularIMC1 + 2))
return "Peso normal";
else if (pc >= calcularIMC1 + 2)
return "Acima do peso";
return ("");
}
}