Não consigo verificar se uma string é inteira ou não!
Meu código:
importjavax.swing.JOptionPane;publicclassExec07{publicstaticvoidmain(String[]args){finalintladosTriangulo=3;floatsemiPerimetro=0,soma=0;intrecebeValor=0;for(intx=1;x<=ladosTriangulo;x++){recebeValor=Integer.parseInt((JOptionPane.showInputDialog(null,"digite um número inteiro")));}}}
o valor a ser digitado deve ser inteiro. Preciso saber comparar se é um inteiro para que eu possa repetir o processo, para ser digitado novamente.
desculpe minha ignorância mais vc quer saber se oq vc digitou é um 1 ou “1”
e mostra um System.out.println(“É um número inteiro”);
ou System.out.println(“É um numero Literal”);
kina
Rafael Afonso:
Olá:
Experimente usar expressões regulares:
"1234".matches("\d*")
Grato,
Posso estar totalmente enganado, e nem fiz um teste, mas já ouvi falar que é mais performático verificar um NumberFormatException (Integer.parseInt, por exemplo).
Obs: o matches só funciona no 1.4 para cima.
T
thingol
De qualquer maneira, é sempre melhor isolar tais coisas em um método utilitário. É melhor ter algo como:
/** * Verifica se seu parâmetro representa um valor numérico (um ou mais dígitos de 0 a 9). * @param str A string a ser verificada. * @return true se a string representa um valor numérico. */publicstaticbooleanisNumeric(Stringstr){...ponhaaquisuaimplementaçãopreferida...}
que ficar fazendo copy&paste dessas coisas (.matches ("\d+") ou try/catch) no meio do seu código.
Isso parece sânscrito para quem não é fera em expressões regulares, e além disso é difícil de manter.
R
rsehnem
Muito obrigado pessoal, com a ajuda de todos consegui.
ficou assim:
publicclassExec07{staticbooleannumerico=false;publicstaticvoidmain(String[]args){finalintladosTriangulo=3;intnumeroInt;Stringstring="";for(intx=1;x<=ladosTriangulo;x++){string=JOptionPane.showInputDialog(null,"Digite valor inteiro: ");while(isNumerico(string)){string=JOptionPane.showInputDialog(null,"Deve ser um valor inteiro: ");}numeroInt=Integer.parseInt(string);System.out.println("numeroInt: "+numeroInt);}}publicstaticbooleanisNumerico(Stringstring){char[]cs=string.toCharArray();for(intx=0;x<cs.length;x++){if((cs[x]<'0')||(cs[x]>'9')){returnnumerico=true;}}returnnumerico=false;}}