Preciso de ajuda no meu programa de calculo de IMC

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 ("");

}
}

Aposto que o problema está aqui. A formula que eu conheço para o IMC não é esta e é usada com base no peso e na altura e não apenas na altura e duas constantes mágicas.

Perdão, eu tinha colocado errado o programa deve exibir o peso
ideal e a análise do peso atual da pessoa. Este(72.7 * this.alt - 58) eh o calculo para saber o peso ideal para pessoa com tal altura, depois o programa deveria comparar o peso com o que foi calculado e dizer se ela esta abaixo do peso, no peso ideal ou acima do peso.