Cálculo_IMC 1.23 [Modo Gráfico]

7 respostas
U

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

/* 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

7 Respostas

ViniGodoy

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

U

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.

ViniGodoy

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.

d34d_d3v1l

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,

ViniGodoy

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.

d34d_d3v1l

uhdashuasd…

“Toma!”

U

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

Criado 11 de fevereiro de 2011
Ultima resposta 12 de fev. de 2011
Respostas 7
Participantes 3