[Dúvida] Caloculo de IMC - Try e Catch

5 respostas
B

Ola galera, estou fazendo um trabalhinho e estou com um problema, o bloco try e catch não esta funcionando.
Antes ele até funcionava e o problema ficou no if e no else if, acho é tava com erro na hora do calculo com float.

Bom eis o código:

import javax.swing.*;

public class CalculaIMC extends Exception {
	
	public static void main(String []args){
		
		String getPeso, getAltura;
		
		float altura, peso, IMC;
		

		try{
			getPeso = JOptionPane.showInputDialog(null, "Digite seu peso(Use kg + gramas Ex: 50.0): ");
			getAltura = JOptionPane.showInputDialog(null, "Digite sua altura(use Metros, Centímetros): ");
			
			if((getPeso.length() == 0)&&(getAltura.length() == 0)){
				JOptionPane.showMessageDialog(null,"Digite o peso e a altura!!");
					
				}
			
			peso = Float.parseFloat(getPeso);
			altura = Float.parseFloat(getAltura);

/* esse bloco não esta funcionando */
		
		} catch(Exception e){
			
			JOptionPane.showMessageDialog(null, "Numeros incorretos!!");
			peso = 0;
			altura = 0;

		}

  		
		IMC = peso / altura * 2;
		
		if(IMC <= 18.40){
			JOptionPane.showMessageDialog(null,"Abaixo do peso!");
		} 
		else if((IMC >= 18.50 && IMC <= 24.90)){
			JOptionPane.showMessageDialog(null, "Você está no seu peso ideal");
		} 
		else if((IMC >= 25.00 && IMC <= 29.90)){
			JOptionPane.showMessageDialog(null, "Você esta acimado seu peso (sobrePeso)");
		}
		else if ((IMC >= 30.00 && IMC <= 34.90)){
			JOptionPane.showMessageDialog(null, "Obesidade grau I");
		}
		else if((IMC >= 35.00 && IMC <= 39.90)){
			JOptionPane.showMessageDialog(null, "Obesidade grau II");
		} 
		else if(IMC < 40.00){
			JOptionPane.showMessageDialog(null, "Obesidade grau III");
		}
		
	}
	

}

alguém poderia me ajudar??
Obrigado galera boa tarde

5 Respostas

xandevieira

Coloque seus ifs e else dentro do bloco try/ catch e no final coloque um outro else para quando nao entrar em nenhum if

alves.Felipe

ola…

não entendi seu problema… o código esta certo… ele só não esta caindo em nenhuma condição…

faz assim:

try{   
			getPeso = JOptionPane.showInputDialog(null, "Digite seu peso(Use kg + gramas Ex: 50.0): ");   
			getAltura = JOptionPane.showInputDialog(null, "Digite sua altura(use Metros, Centímetros): ");   

			if((getPeso.length() == 0)&&(getAltura.length() == 0)){   
				JOptionPane.showMessageDialog(null,"Digite o peso e a altura!!");   

			}   

			peso = Float.parseFloat(getPeso);   
			altura = Float.parseFloat(getAltura);   

			System.out.println("peso: "+peso+" altura: "+altura);
			/* esse bloco não esta funcionando */   

		} catch(Exception e){   

			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "Numeros incorretos!!");   
			peso = 0;   
			altura = 0;   

		}   
		
		 IMC = peso / altura * 2;   
         System.out.println("imc: "+IMC);
	        if(IMC <= 18.40){   
	            JOptionPane.showMessageDialog(null,"Abaixo do peso!");   
	        }   
	        else if((IMC >= 18.50 && IMC <= 24.90)){   
	            JOptionPane.showMessageDialog(null, "Você está no seu peso ideal");   
	        }   
	        else if((IMC >= 25.00 && IMC <= 29.90)){   
	            JOptionPane.showMessageDialog(null, "Você esta acimado seu peso (sobrePeso)");   
	        }   
	        else if ((IMC >= 30.00 && IMC <= 34.90)){   
	            JOptionPane.showMessageDialog(null, "Obesidade grau I");   
	        }   
	        else if((IMC >= 35.00 && IMC <= 39.90)){   
	            JOptionPane.showMessageDialog(null, "Obesidade grau II");   
	        }   
	        else if(IMC < 40.00){   
	            JOptionPane.showMessageDialog(null, "Obesidade grau III");   
	        }   
	        else
	        {
	        	JOptionPane.showMessageDialog(null, "caiu aqui");  
	        }

eu só adicionei o último else…

B

certo vou tentar aqui

Obrigadão

B

Quando acontecer uma exceção, o teu programa vai dar um ArithmeticException por causa de uma divisão por zero ao calcular o IMC.

lucamartins

Pq a sua classe Herda de Exception???

Criado 8 de maio de 2008
Ultima resposta 9 de mai. de 2008
Respostas 5
Participantes 5