Pessoal existe alguma maneira de verificar se uma string e numerica em java ?
hoje eu trato a runtime exception:
try {
....
} catch(NumberFormatException n) {
}
mais nao existe alguma maneira mais facil ?
Pessoal existe alguma maneira de verificar se uma string e numerica em java ?
hoje eu trato a runtime exception:
try {
....
} catch(NumberFormatException n) {
}
mais nao existe alguma maneira mais facil ?
Cara eu não sei se falo bobagem pois conheço pouco JAVA mas estou caminhando …
a minha sugestão é que você poderia comparar o String com valores ta tabela ASCII dentre o intervalo onde estão os númros na tabela
não muito bem como fazer … só uma sugestão mesmo
Expressões Regulares
Utilizando Expressão regular fica assim.
Pattern.matches("[0-9]", "1asdsa1231");
isso e facil ?
facil seria se tivesse um
boolean Integer.isInteger(String value)
por isso que java e chato
Se quer coisa facil assim, vai para Ruby então…
hehehe
[quote=ualex]isso e facil ?
facil seria se tivesse um
boolean Integer.isInteger(String value)
por isso que java e chato :)[/quote]
E se vc quisesse testar um float? ou double? floats e doubles não são tão números quanto inteiros?
E se você quisesse testar um long int, que não cabe em um inteiro normal?
E se vc quisesse testar um inteiro com 6834763 algarismos?
Já pensou se precisassemos de um método para identificar cada tipo de string numérica?
Com UMA expressão regular já dá pra matar isso… O “mais fácil” não necessariamente é o “mais prático”
Tem a opção se usar jakarta commons - commons lang
http://jakarta.apache.org/commons/index.html
http://jakarta.apache.org/commons/lang/
if( !StringUtils.isNumeric( value ) ){
throw new CampoNumericoException( "O Campo [ " + value + " ] não é um campo Numérico" );
}
else
return value;
bravox
Numeric.isNumeric
Float.isFloat
Double.isDouble
e assim por diante.
esse commons lang e interessante.
Aprender e usar expressões regulares é importantíssimo independente da linguagem.
Bom, você pode tentar também descobrir usando a classe Character, como é mostrado no exemplo abaixo…
String texto = "-2.3a123";
boolean digito = true;
for (int i=0; i< texto.length(); i++) {
if (Character.isLetter(texto.codePointAt(i))) {
digito = false; break;
}
}
System.out.println("Texto é número? " + digito);
Não seria essa a melhor maneira, mas no caso, funciona perfeitamente, menos com notação científica.
[quote]esse commons lang e interessante.
[/quote]
existe uma serie de api no jakarta commons que complementão a api do java , vale apena da uma olhada antes de tentar reiventar a roda !!
bravox
[quote=ualex]Pessoal existe alguma maneira de verificar se uma string e numerica em java ?
hoje eu trato a runtime exception:
try {
....
} catch(NumberFormatException n) {
}
mais nao existe alguma maneira mais facil ?[/quote]
O correto é encapsular esse try/catch em uma função utilitária. Fiz alguns testes e vi que tratar a exceção é mais rápido que checar a expressão regular.
O interessante é que uma coisa parecida também ocorre no Oracle PL/SQL - em um livro que li para a versão 7.0 (aquele da O´Reilly que tem uma mariposa na capa) foi comprovado que tratar a exceção é mais rápido que checar os dígitos manualmente.
O loko meu… Java é chato ou vc tem preguiça de aprender?! :lol: rsss
To com as expressoes regulares tbm…
Ou… caso goste de carga… verifique cada character intao…
boolean Character.isDigit( char arg0 );
Notamos que há varias soluções para este caso, cada um pode implementar da forma que achar melhor.
Por isto o java é interessante e não “Chato”, há varias soluções, umas mais elegantes outras nem tanto, porém ele é flexivel e trasparente.
ok, concordo plenamente. mais ele e “chato” porque nao vem com uma solucao rapida embutida.