:?: galera to com esse app que fiz estou querendo “injetar” um try/catcher nele e jah tentente e nao consegui
:arrow: toda ajuda posivel sera bem vinda
tah ai o codigo da parada :!:
publicstaticvoidmain(String[]args){intopc,parc;floatpag,parc1,parc2,parc3;DecimalFormatforma=newDecimalFormat();Stringentrada=JOptionPane.showInputDialog(null,"---------------MENU---------------"+"\n"+"Escolha uma opção:"+"\n"+"1 Pagamento em dinheiro"+"\n"+"2 Pagamento a prazo"+"\n"+"3 Pagamento em cartão de débito");opc=Integer.parseInt(entrada);switch(opc){case1:entrada=JOptionPane.showInputDialog(null,"Digite o valor do pagamento:");pag=Float.parseFloat(entrada);forma.applyPattern("R$ #,##0.00");JOptionPane.showMessageDialog(null,"pagamento a vista:\n"+forma.format(pag));break;case2:entrada=JOptionPane.showInputDialog(null,"Digite o valor do pagamento:");pag=Float.parseFloat(entrada);entrada=JOptionPane.showInputDialog(null,"Digite a quantidade de meses que sera dividido:");parc=Integer.parseInt(entrada);parc1=pag/parc;parc2=(parc1*10)/100+parc1;parc3=parc2*parc;forma.applyPattern("R$ #,##0.00");JOptionPane.showMessageDialog(null,"Valor por parcela\n"+forma.format(parc2));JOptionPane.showMessageDialog(null,"valor total:\n"+forma.format(parc3));break;case3:entrada=JOptionPane.showInputDialog(null,"Digite o valor do pagamento:");pag=Float.parseFloat(entrada);parc2=(pag*5)/100+pag;JOptionPane.showMessageDialog(null,"volar total\n"+"R$"+parc2);break;default:JOptionPane.showMessageDialog(null,"opção inválida");}}}
É sempre bom documentar o máximo sua dúvida, para que fique fácil o entendimento.
Sempre coloque o código em tags Code.
A
andredecotia
Só pra complementar:
NumberFormatException ocorre qdo. a aplicação tenta converter uma string para um tipo numérico porém a string não tem o tipo apropriado ou seja não é um número.
Fonte: JavaDoc 1.6 (ela deve ser sua melhor amiga nessa fase de aprendizado)
A
andredecotia
vielmateus:
Acredito que esse seja o trecho de código que você precisa:
Cara,
As dicas dos nossos colegas aqui são bem válidas…
Lembre-se sempre de colocar o try / catch onde possa surgir uma exceção!
Na conversão por exemplo, se o usuário-gênio escreve ao invés de colocar um inteiro, vai lançar uma exceção!
Em castings tb poderão ocorrer, mas aí vc deve estar atento à sua implementação…
Espero que consiga resolver,
[]'s
Lucas_Abbatepaolo
Pessoal vamus pegar leve com o cara…rs
Logico que toda informação é bem vinda, mais ele é iniciante e isso que ele postou aqui parece ser um programinha de faculdade, não é necessario jogar tanta informação assim no cara…
Como todos disseram ai pra cima a NumberFormatException está provavelmente acontecendo quando voce tenta pegar o que foi digitado e convertelo em um inteiro, sendo que esta conversão não é possivel.
na minha opnião que para o q vc esta querendo fazer o try/catch nao seria o ideal e sim vc verificar c o conteudo digitado está dentro do que vc espera…
por exempo:
antes do seu switch vc coloca um if e tenta fazer a conversao da “entrada” depois do if.
Deve-se analisar caso a caso o tratamento de exceções.
Há exceções que devem ser tratadas: use try-catch
Há exceções que devem ser evitadas: use condicionais como if
Há exceções que devem ser delegadas: se não for filha de RuntimeException, adicione clausulas throws na assinatura do método e, se necessário, throw da exceção no corpo do método.
Evite a má prática do uso de try-catch como um if. Apesar que, nem sempre é simples fazer isso como em caso de parses de String para algum tipo numérico (precisaria testar através de regex).
Perfeito.
WellingtonRamos
Antes de mais nada, coloque teu código entre tags CODE. É importante garantir legibilidade para ajudar quem quer te ajudar.
Outra coisa, NumberFormatException normalmente é uma Exception unchecked e muitas vezes o problema pode ser corrigido sem necessidade de try-catch.
Em qual linha ocorre o erro? E qual o stackTrace que é gerado?
e.con:
:?: galera to com esse app que fiz estou querendo "injetar" um try/catcher nele e jah tentente e nao consegui
:arrow: toda ajuda posivel sera bem vinda
tah ai o codigo da parada :!:
importjavax.swing.JOptionPane;importjava.text.DecimalFormat;publicclassquestao1{publicstaticvoidmain(String[]args){intopc,parc;floatpag,parc1,parc2,parc3;DecimalFormatforma=newDecimalFormat();Stringentrada=JOptionPane.showInputDialog(null,"---------------MENU---------------"+"\n"+"Escolha uma opção:"+"\n"+"1 Pagamento em dinheiro"+"\n"+"2 Pagamento a prazo"+"\n"+"3 Pagamento em cartão de débito");opc=Integer.parseInt(entrada);switch(opc){case1:entrada=JOptionPane.showInputDialog(null,"Digite o valor do pagamento:");pag=Float.parseFloat(entrada);forma.applyPattern("R$ #,##0.00");JOptionPane.showMessageDialog(null,"pagamento a vista:\n"+forma.format(pag));break;case2:entrada=JOptionPane.showInputDialog(null,"Digite o valor do pagamento:");pag=Float.parseFloat(entrada);entrada=JOptionPane.showInputDialog(null,"Digite a quantidade de meses que sera dividido:");parc=Integer.parseInt(entrada);parc1=pag/parc;parc2=(parc1*10)/100+parc1;parc3=parc2*parc;forma.applyPattern("R$ #,##0.00");JOptionPane.showMessageDialog(null,"Valor por parcela\n"+forma.format(parc2));JOptionPane.showMessageDialog(null,"valor total:\n"+forma.format(parc3));break;case3:entrada=JOptionPane.showInputDialog(null,"Digite o valor do pagamento:");pag=Float.parseFloat(entrada);parc2=(pag*5)/100+pag;JOptionPane.showMessageDialog(null,"volar total\n"+"R$"+parc2);break;default:JOptionPane.showMessageDialog(null,"opção inválida");}}}
WellingtonRamos
Não faça disso uma verdade.
Deve-se analisar caso a caso o tratamento de exceções.
Há exceções que devem ser tratadas: use try-catch
Há exceções que devem ser evitadas: use condicionais como if
Há exceções que devem ser delegadas: se não for filha de RuntimeException, adicione clausulas throws na assinatura do método e, se necessário, throw da exceção no corpo do método.
Evite a má prática do uso de try-catch como um if. Apesar que, nem sempre é simples fazer isso como em caso de parses de String para algum tipo numérico (precisaria testar através de regex).