Dúvidas no try e catch!

17 respostas
bsijava

Pessoal estou com uma dúvida em try e catch e não sei o que pode estar faltando se alguém puder me ajudar!!
agradeço desde jah os erro estão logo abaixo!!!

import javax.swing.JOptionPane;
//
//
class calculo{
	public static void main(String args[]){
		int num1, num2;
	try{
		num1 = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite um número"));
	catch(NumberFormatException e){
		JOptionPane.showMessageDialog(null,"ERRO: \n Não aceitamos Letras \n Somente Números", "Problemas", JOptionPane.ERROR_MESSAGE);}
	
			}
		}
	}

Os erros são o seguinte
calculo.java:9: 'catch' without 'try'
catch(NumberFormatException e){
^
calculo.java:7: 'try' without 'catch' or 'finally'
try{
^
2 errors

17 Respostas

F

dei uma olhada bem rapida… e ta faltando } antes do catch…

ate mais

A

fecha o try antes de começar o catch

try{   
        num1 = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite um número"));   
}
    catch(NumberFormatException e) {   
        JOptionPane.showMessageDialog(null,"ERRO: \n Não aceitamos Letras \n Somente Números", "Problemas", JOptionPane.ERROR_MESSAGE);
}
bsijava

vlw era isso mesmo!!!
falta de atenção minha!!!
OBG
VLW

bsijava

Término da 1 Dúvida início da 2
Pessoal depois de resolvido esse problema do catch, estou usando uma estrutura de repetição pra quando da erro voltar para a tela inicial, mas quando acerta eh para fechar a tela como eu faço isso???
so que acertando ou não volta a tela por causa do cont tem um jeito de fazer isso que eu pedi acima

import javax.swing.JOptionPane; // // class calculo{ public static void main(String args[]){ int num1, num2, cont; for(cont=1; cont!=0;cont=1+cont){ try{ num1 = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite um número", "Não digite Letras"));} catch(NumberFormatException e){ JOptionPane.showMessageDialog(null,"ERRO: \n Não aceitamos Letras \n Somente Números", "Cálculo", JOptionPane.ERROR_MESSAGE); } } } }

vlw agradeço desde jah

bsijava

Alguém ai pode me ajudar???

peczenyj
public class Calculo{
	
	public static void main(String args[]){  
		int num;  
		try{  
			num = ...		
		}catch(NumberFormatException e){  
			// mostra mensagem	
		}
	}
}
bsijava

Eu testei peczenyj mas agora quando da o erro que so pode digitar letras em vez de voltar para tela inicial fecha a tela!!!
se pudesse ter como eu queria que quando desse erro voltasse para tela inicial onde pede o número novamente!!!

F

não é uma boa prática, mas coloca dentro de um while(true){}

ai se quando tiver certo vc tira do loop com break ou poe uma condição melhor no while…

bsijava

Por Favor não entendi plenamente como fazer!!!
poderia explicar melhor flaviojunior!
agradeço desde jah

F

como eu disse, não é uma boa prática de programação…

mas vc pode fazer mais ou menos assim

while(true){ try { num1 = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite um número", "Não digite Letras")); break; } catch (NumberFormatException e) { JOptionPane.showMessageDialog(null, "ERRO: \n Não aceitamos Letras \n Somente Números", "Cálculo", JOptionPane.ERROR_MESSAGE); } }

ate mais

bsijava

vlw flavio entendi agora do break antes do catch deu certo obrigado!!!

F

deu certo… mas eu nao indico vc a quebrar um loop com break hehehe

é melhor vc modificar a condição do while para que saia sem que vc precise quebrar o loop…

ate mais

bsijava

outra coisa!!!
como eu faço pra alterar as características de um button em um editor simples de texto(onde estou fazendo esse teste) pois a tela eh um showInputdialog???
No caso eu queria alterar as características do botão CANCEL;
tem como fazer isso???
pois quando eu dou um clic no CANCEL ele joga a tela de erro!
agradeço desde jah

F

nao sei quase nd de parte grafica…

mas se vc quiser, pode postar aqui http://www.forumdev.devbr.net/

tem um cara la que tem a manha em swing…

ate mais…

bsijava

blz!!!
mais alguém ai pode ajudar???

bsijava

Agora sei o que você quis dizer flavio!!!!!!
agora ta dando erro pois estou usando case!!!!!
e tem dois break se alguém puder da uma olhada!!!!!

import javax.swing.JOptionPane;
//
//
class calculo{
	public static void main(String args[]){
		int num1, num2, operacao, conta1, conta2, conta3, conta4;
		while(true){
    			try{
				num1 = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite um número para calcular", "Não digite Letras"));
				num2 = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite outro número para calcular", "Não digite Letras"));
				operacao = Integer.parseInt(JOptionPane.showInputDialog(null, "Informe a operação \n 1- Adição \n 2- Subtração \n 3- Multiplicação \n 4- Divisão", "Não digite Letras"));
 			switch(operacao){
			case 1:
				conta1 = num1+num2;
				JOptionPane.showMessageDialog(null, "O resultado da Operação é: " + conta1);
			break; 
			case 2:
				conta2 = num1-num2;
				JOptionPane.showMessageDialog(null, "O resultado da Operação é: " + conta2);
			break;
			case 3:
				conta3 = num1*num2;
				JOptionPane.showMessageDialog(null, "O resultado da Operação é: " + conta3);
			break;
			case 4:
				conta4 = num1/num2;
				JOptionPane.showMessageDialog(null, "O resultado da Operação é: " + conta4);
			
			break; 
			default:
			break;
				}
			}catch(NumberFormatException e){
				JOptionPane.showMessageDialog(null,"ERRO: \n Não aceitamos Letras \n Somente Números", "Cálculo", JOptionPane.ERROR_MESSAGE);
				}
			}
		}
	}

seguinte a tela que eu estou fazendo manda jogar 2 números para fazer o cálculo!!
e depois manda escolher o tipo de operação através dos case!!!!!!
Obs: deverão ser digitados somente números, quando digita letras da erro e volta para a tela inicial por isso do while!!!!!!! So que agora tem dois break linha 29 e 31 um para while e outro para case!!!!!
por esse motivo quando a conta finaliza ela volta para a tela inicial
se alguém puder ajudar!!
agradeço desde jah

bsijava

Esquece pessoal resolvido o problema!!!

era a penas coloca o fecha chaves do switch antes do 2º break

Criado 31 de julho de 2008
Ultima resposta 1 de ago. de 2008
Respostas 17
Participantes 4