Tratamento de erro

8 respostas
java
R

Boa tarde pessial, estou com um probleminha aqui com um código:

System.out.println("    --- Esta etapa irá ser calculada o VALOR VENAL DO TERRENO  ---    ");
	
	System.out.println("");
	
	System.out.println("                    --- A fórmula é: ---");
	
	System.out.println("");
	
	System.out.println("   ************************************************************");                                     
	System.out.println("   * VVT = At x Vm x Fst x Fet x Fct x Fge x Fgl x Fmp x Fdat *");
	System.out.println("   ************************************************************");
	System.out.println("");
	

	
	    	     
	do {
		try {
		System.out.println("Para visualizar o menu pressione 1 ou pressione 2 para nao visualizar o menu");
		op = scan.nextInt();
		
		System.out.println("");
		if (op == 1) {
		System.out.println("");
		System.out.println("      ********************************************************************************************************************************* ");
		System.out.println("| 1. VVT = Valor Venal do Terreno                               \t 2. AT = Área do terreno                                           |");                                     
		System.out.println("| 3. VM = Valor do metro quadrado por padrao de rua             \t 4. Fst = Fator de influencia da situação do terreno               |");
		System.out.println("| 5. Fet = Fator de influencia de esquina ou numero de testada  \t 6. Fct = Fator de influencia de caraciterística do terrreno       |");
		System.out.println("| 7. Fge = Fator geometrico                                     \t 8. Fgl = Fator gleba                                              |");         
		System.out.println("| 9. Fmp = Fator de melhorias publicas                          \t 10. Fdat = Fator de depriciação em função da área de tombamento   |");
		System.out.println("      **********************************************************************************************************************************");
		break;
		}else if (op == 2 ){
			System.out.println("Voce optou por não visualizar o menu");
			break;
			}
		else  {
			JOptionPane.showMessageDialog(null, "Por favor selecione um número válido"); 
			} 
				
			
		
		}catch (InputMismatchException e){
	    	 
			JOptionPane.showMessageDialog(null, "Erro esse campo aceita somente números" +e);
	    	 letras = true;
	    	 scan = new Scanner(System.in);
	    	
		}
		return;
	}while (op != 1|| op != 2 && letras == true  );

quando o trycatch entra em ação ele não volta a ser executadoou seja pedir para o usuario digitar novamente!
Alguem pode me ajudar com isso ?

atenciosamente
Obrigado

8 Respostas

PedreiroDeSoftware

Remova o return, pois esta instrução encerra o método.

R

Olá @PedreiroDeSoftware

Eu sou novato em programação, más quando o removo o return ele da erro nas variaveis dentro do while
while (op != 1|| op != 2 && letras == true ); nocaso o OP ele deixa de recinhecer e me pede para inicializa-las

juliofsn

O @PedreiroDeSoftware está certo. A aplicação não deixa de reconhecer suas variáveis, ele apenas dá um aviso, pois é uma boa prática sempre inicializá-las, mas seu programa vai funcionar sem problemas ainda. Remova mesmo o return.

Mike

Inicializa o op com o valor 0 e ai quando chegar na parte do Scanner, o valor vai alterar

PedreiroDeSoftware

Inicialize a variável op como 0.
int op = 0;
Não deve interferir na lógica do while, pois o valor 0 está no intervalo de erro proposto, por ser diferente de 1 ou 2.

R

Muito obrigado pessoal, funcionou !

Pessoal vocês podem me dar alguma dica, como um novato em programação possa aprimorar seus conhecimentos como curso e etc…

darlan_machado

A primeira coisa é não ficar abrindo 200 tópicos sobre o mesmo tema no guj.
O segundo é buscar um curso com bom conteúdo, eu sugiro o canal da Loiane no youtube.

R

hehehe, verdade @darlan_machado, irei começar a assistir os vídeos dela !

Criado 21 de novembro de 2019
Ultima resposta 21 de nov. de 2019
Respostas 8
Participantes 5