Olá pessoal queria uma ajuda,comecei semestre passado Ciëncia da Computaçäo e gostaria de aprender Java estou pesquisando e estudando pela net achei varios topicos interessantes nesse forum.
Agora gostaria de contar com a ajuda de vcs tranquei em uma parte do meu programa onde gostaria de ler apenas numeros,uma parte ate ja consegui, que é fazer ele aceitar apenas o numero 1 e 2…
Agora gostaria que alguem me ajuda se a fazer com q bloquei quando digitar letras…
Essa parte eu ja consegui:
//Pede o categoria do produto String Produto = JOptionPane.showInputDialog(“PRODUTO 1-ROUPA 2-CALÇADOS”);
//ignora numeros maiores que 2if(Integer.valueOf(Produto)>2)JOptionPane.showMessageDialog(null,"Voce digitou um valor invalido: "+Produto);Desdejaagradeçoaajuda!!!
Olá pessoal queria uma ajuda,comecei semestre passado Ciëncia da Computaçäo e gostaria de aprender Java estou pesquisando e estudando pela net achei varios topicos interessantes nesse forum.
Agora gostaria de contar com a ajuda de vcs tranquei em uma parte do meu programa onde gostaria de ler apenas numeros,uma parte ate ja consegui, que é fazer ele aceitar apenas o numero 1 e 2…
Agora gostaria que alguem me ajuda se a fazer com q bloquei quando digitar letras…
Essa parte eu ja consegui:
//Pede o categoria do produto String Produto = JOptionPane.showInputDialog("PRODUTO 1-ROUPA 2-CALÇADOS");
//ignora numeros maiores que 2if(Integer.valueOf(Produto)>2)JOptionPane.showMessageDialog(null,"Voce digitou um valor invalido: "+Produto);Desdejaagradeçoaajuda!!!</blockquote>
André Fonseca com certeza usar Regex seria a melhor opção, mas o nosso amigo quer fazer um teste simples acho que iria complicar mais do que ajudar.
vou tentar simplificar um pouco.
o metodo parseInt lança uma exceção nao verificada "NumberFormatException" onde quero chegar com isso?
sempre que se tenta fazer parse de algo que nao seja um numero valido é lançada uma exceção.
vou deixar claro que essa nao é a melhor maneira pra fazer isso, mas ninguem morrerá por isso. vamos la:
importjavax.swing.JOptionPane;publicclassTest{publicstaticvoidmain(String[]args)throwsException{Stringnumero=JOptionPane.showInputDialog("digite um numero:");intn=0;try{n=Integer.parseInt(numero);//se nao for um numero lança exceção// faça o que quiser com 'n'}catch(NumberFormatExceptionnfe){JOptionPane.showMessageDialog(null,"numero invalido");}}}
J
javaMyLife
não é a melhor forma mais é 100% confiavel
intn=0;Stringtest;do{Quantidade=JOptionPane.showInputDialog(null,"Digite a quantidade do Produto");//,JOptionPane.PLAIN_MESSAGE);try{n=Integer.parseInt(Quantidade);test="0";}catch(NumberFormatExceptionnfe){test="1";JOptionPane.showMessageDialog(null,"numero inválido");}}while(test.equals("1")||Integer.parseInt(Quantidade)<=0);
luistiagos1 like
a.gomes:
André Fonseca com certeza usar Regex seria a melhor opção, mas o nosso amigo quer fazer um teste simples acho que iria complicar mais do que ajudar.
vou tentar simplificar um pouco.
o metodo parseInt lança uma exceção nao verificada "NumberFormatException" onde quero chegar com isso?
sempre que se tenta fazer parse de algo que nao seja um numero valido é lançada uma exceção.
vou deixar claro que essa nao é a melhor maneira pra fazer isso, mas ninguem morrerá por isso. vamos la:
importjavax.swing.JOptionPane;publicclassTest{publicstaticvoidmain(String[]args)throwsException{Stringnumero=JOptionPane.showInputDialog("digite um numero:");intn=0;try{n=Integer.parseInt(numero);//se nao for um numero lança exceção// faça o que quiser com 'n'}catch(NumberFormatExceptionnfe){JOptionPane.showMessageDialog(null,"numero invalido");}}}
Ou seja se não sabe expressões regulares mete gambi que resolve....
Não sei se funfa mesmo... não testei aqui... mas creio que ta certo...
agora essa de converter em numero pra ver se ocorre exceção de parse é uma grande gambiarra...
E
entanglement
Não é gambiarra ou “recurso técnico alternativo” não, pois:
a) A expressão regular que faz a mesma coisa é mais lenta que simplesmente você capturar uma ParseException;
b) Isso é parecido com o que você faria em várias outras linguagens.
luistiagos
como sera q a api faz para verificar se ocorreu um parse exception ao vc tentar converter uma String em numero?
nunca olhei a fundo… porem tenho ctza que utiliza um recurso parecido com “ER” se não utilizar “ER” ao menos ela faz um algoritimo pra esta validação… ou seja em termos de velocidade é a mesma coisa… pois isto não é uma exeção de runtime e sim uma exceção feita atravez de validação… se fosse uma exceção de runtime como uma divisão por zero por exemplo a vm pode capturar uma interupção de nivel baixo e lançar a exceção dai sim seria bem mais rapido…
Exceções devem ser usadas pra tratar erros e não fazer validações…