Cálculo_IMC 1.23 [Modo Gráfico]

Consegui aprimorar o antigo programa e colocar em modo gráfico, otimizando e melhorando o nível técnico do código.

[code]
/* Calculo IMC 1.23
@author Raphael Santana Carvalho
*/

import javax.swing.JOptionPane; // classe JOptionPane

public class CalculoIMC_Grafico
{
public static void main(String args[])
{
String software_name = (“Cálculo de IMC [1.23]”);
String message = (“Bem vindo ao programa para Cálculo de IMC! \n [Versão 1.23] \n\n Criado por Raphael Santana Carvalho.”);
JOptionPane.showMessageDialog(null, message, software_name, JOptionPane.INFORMATION_MESSAGE);

	String msg_catch = ("O programa foi encerrado.");
	int sexo = 0;
	double peso = 0;
	double altura = 0;

	try {
		while (sexo != 2 && sexo != 1) {
			sexo = Integer.parseInt(JOptionPane.showInputDialog(null, "Qual é o seu sexo: masculino ou feminino? \n Para masculino digite [1]. \n Para feminino digite [2].", software_name, JOptionPane.INFORMATION_MESSAGE));  
		switch(sexo) {
			case 1: JOptionPane.showMessageDialog(null, "- O seu sexo é: Masculino.");
			break;
			case 2: JOptionPane.showMessageDialog(null, "- O seu sexo é: Feminino.");
			break;
			default: JOptionPane.showMessageDialog(null, "Favor digite apenas os números 1 ou 2.");
		}
		}
	}
	catch (NumberFormatException ex) {
		JOptionPane.showMessageDialog(null, msg_catch, software_name, JOptionPane.ERROR_MESSAGE);
		System.exit(0);
	}		

	//peso
	try {
		String valor_peso = (JOptionPane.showInputDialog(null, "Qual é o seu peso [Exemplo: 60.5]?", software_name, JOptionPane.INFORMATION_MESSAGE));
		valor_peso = valor_peso.replace(',','.');
		
		peso = Double.parseDouble(valor_peso);

		JOptionPane.showMessageDialog(null, "- O seu peso é: " + peso + " kilogramas!");
	}	
	catch (NullPointerException ex) {
		JOptionPane.showMessageDialog(null, msg_catch, software_name, JOptionPane.ERROR_MESSAGE);
		System.exit(0);
	}		

	//altura
	try {
		String valor_altura = (JOptionPane.showInputDialog(null, "Qual é a sua altura [Exemplo: 1.70]?", software_name, JOptionPane.INFORMATION_MESSAGE));
		valor_altura = valor_altura.replace(',','.');

		altura = Double.parseDouble(valor_altura);

		JOptionPane.showMessageDialog(null, "- A sua altura é: " + altura + " metros!");
	}
	catch (NullPointerException ex) {
		JOptionPane.showMessageDialog(null, msg_catch, software_name, JOptionPane.ERROR_MESSAGE);
		System.exit(0) ;
	}

	//calculo_IMC
	double calcular_IMC = peso / ((altura)*(altura)); 

	//vetores
	double imc[] = new double[2];

	if (sexo == 1) {
		JOptionPane.showMessageDialog(null, "Resultado IMC (Masculino):", software_name, JOptionPane.INFORMATION_MESSAGE);
		imc[0] = 20.7; imc[1] = 26.4;  
	}
	else if (sexo == 2) {
		JOptionPane.showMessageDialog(null, "Resultado IMC (Feminino):", software_name, JOptionPane.INFORMATION_MESSAGE);
		imc[0] = 19.1; imc[1] = 25.8; 
	}

	String resultado = ("Abaixo do peso: Menor que " + imc[0] + ".\nPeso ideal: Maior que " + imc[0] + " e menor que " + imc[1] + ".\nAcima do peso: Maior que " + imc[1] + ". ");

	if (calcular_IMC < imc[0]) {
		JOptionPane.showMessageDialog(null, "- O seu IMC é: " + calcular_IMC + "\n Você está abaixo do peso!\n\n" + resultado, software_name, JOptionPane.INFORMATION_MESSAGE);
	}

	if ((calcular_IMC >= imc[0]) && (calcular_IMC < imc[1])) {
		JOptionPane.showMessageDialog(null, "- O seu IMC é: " + calcular_IMC + "\n Você está no peso ideal!\n\n" + resultado, software_name, JOptionPane.INFORMATION_MESSAGE);
	}

	if (calcular_IMC >= imc[1]) {
		JOptionPane.showMessageDialog(null, "- O seu IMC é: " + calcular_IMC + "\n Você está acima do peso!\n\n" + resultado, software_name, JOptionPane.INFORMATION_MESSAGE);
	}	
	
	JOptionPane.showMessageDialog(null, msg_catch, software_name, JOptionPane.INFORMATION_MESSAGE);

}	

} // fim da classe CalculoIMC_Grafico[/code]

Corrija a indentação entre as linhas 20 e 37.

prontinho, obrigado pela dica.

@VinyGodoy, você lembra daquele meu antigo programa Calcúlo IMC, melhorou né?

Estou tentando melhorar o máximo, comecei curso Ciências da Comp., obrigado.

Melhorou sim, bastante. :slight_smile:

Só cuidado que esse estilo de identação segue o do C. O Java tem um estilo próprio, definido na Java Code Convention. Ele coloca o { na linha de cima, por exemplo:

if (sexo == 1) { JOptionPane.showMessageDialog(null, "Resultado IMC (Masculino):", software_name, JOptionPane.INFORMATION_MESSAGE); imc[0] = 20.7; imc[1] = 26.4; } else if (sexo == 2) { JOptionPane.showMessageDialog(null, "Resultado IMC (Feminino):", software_name, JOptionPane.INFORMATION_MESSAGE); imc[0] = 19.1; imc[1] = 25.8; }

Fica um pouco mais compacto. Não está errado fazer da forma que você está fazendo.
Outras linguagens, como o C, C++ e C#, seguem o seu padrão. Só não é usual no Java.

hehhe,

eu te falei sobre isso, né utroz ?

Mas é isso, ta chique mesmo…

E outro detalhe, eu nao acredito que ele esteja em
“Modo gráfico”, para mim, modo grafico seria com uma GUI,
não ?

Mas ta chique… continue assim,
voce entrou a pouco tempo no teu curso
e ja faz coisas que muitos só vão dar conta em aula de algoritmo 2… kkkkkkkkkk

abraços,

Ué, os JOptionPanes são o que?
Não são o melhor modo gráfico possível, mas continuam sendo modo gráfico. :slight_smile:

E, realmente, pra quem está começando ele está indo muito bem.

uhdashuasd…

“Toma!”

Arrumei a identação, estava a muito tempo apenas no desenvolvimento desse programa, vou para novos projetos, obrigado pelas ajudas.