Duvida... Recursividade com switch e Tratamento de erros

1 resposta
T

Ae galera… tenho uma dúvida, talvez possam me ajudar…
Como posso utilizar alguma recursividade dentro do switch?

É o seguinte, criei um menu de opções que chamarão métodos de outra classe no mesmo projeto, e utilizei um tratamento de erros para entrada apenas de valores “int” com 6 opções de “case”, porém se digito algum valor string por exemplo, me mostra a mensagem do tratamento de erros e sai do programa, NÃO retorna ao menu… e o mesmo acontece quando digito algum valor inteiro acima das minhas opções…

Se alguém me der uma luz aee, fico muito agradecido… desde já, obrigado!!
O código é este:

import javax.swing.*;
import java.lang.NumberFormatException;

public class Teste_formas {
public static void main(String args[]) {

int opcao;

Formas fo = new Formas();

try {
switch (opcao = Integer.parseInt(JOptionPane.showInputDialog("1 - Quadrado \n" +
                                                          "2 - Retangulo \n" +
                                                          "3 - Triangulo \n" +
                                                          "4 - Cubo \n" +
                                                          "5 - Paralelepípedo \n" +
                                                          "6 - Sair \n\n" +
                                                          "Escolha a Opção Desejada"))) {
                
                case 1: fo.Quadrado();
                    break;
                case 2: fo.Retangulo();
                    break;
                case 3: 
                    break;
                case 4: fo.cubo();
                    break;
                case 5:
                    break;
                case 6: JOptionPane.showMessageDialog(null, "Sair do Programa");
                    break;
                default: return ;//JOptionPane.showMessageDialog(null, "Opção Diferente \n O Programa será finalizado!");
                    break;

            } // fim do switch
            
            System.exit(0);
        
        } // fim do try
        
        catch(NumberFormatException e) {
        JOptionPane.showMessageDialog(null,"Caracter Inválido!");
          
        } 
        
} // fim do main

} // fim da classe

1 Resposta

T

Hey Guy, alterei algumas coisas para melhorar o entendimento.!

import javax.swing.JOptionPane;

public class Principal {

	private void exibeMenu() {			
		int opcao;
		switch (opcao = Integer.parseInt(JOptionPane.showInputDialog("1 - Quadrado \n" +
				"2 - Retangulo \n" +
				"3 - Triangulo \n" +
				"4 - Cubo \n" +
				"5 - Paralelepípedo \n" +
				"6 - Sair \n\n" +
		"Escolha a Opção Desejada"))) {
		case 1:
			System.out.println("Opcao 1");
			break;
		case 2:
			System.out.println("Opcao 2");
			break;
		case 3:
			System.out.println("Opcao 3");
			break;
		case 4: 
			System.out.println("Opcao 4");
			break;
		case 5:
			System.out.println("Opcao 5");
			break;
		case 6:
			System.exit(0);	
		default:
			break;
		}
	} 

	public static void main(String[] args) {
		Principal menu = new Principal();
		try {
			menu.exibeMenu();
		}catch(NumberFormatException e) {
			System.out.println("Caracter Inválido!");
			menu.exibeMenu();
		}
	} // fim do main


} // fim da classe

Não se esqueça que o Catch é um bloco de código, use-o.

Há muitos lugares onde as pessoas criam seus próprios Exceptions para usa-los de forma eficiente e de fácil entendimento!

Criado 20 de maio de 2009
Ultima resposta 3 de ago. de 2009
Respostas 1
Participantes 2