Java

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 ? :slight_smile:

facil seria se tivesse um

boolean Integer.isInteger(String value)

por isso que java e chato :slight_smile:

Se quer coisa facil assim, vai para Ruby então…
hehehe
:smiley:

[quote=ualex]isso e facil ? :slight_smile:

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” :slight_smile:

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.

:slight_smile:

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&lt 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.