Verificar se o valor da String é um número

4 respostas
L

Qual a melhor forma para verificar se o conteúdo de uma String é um Inteiro?

Estou fazendo assim:

try { if (Integer.parseInt(palavra) >= 0 || Integer.parseInt(palavra) < 10) { //minha lógica } } catch (NumberFormatException e) { //System.out.println(e.getMessage()); }

Só que estou achando isso um tanto quanto gambiarrado, tem um jeito mais limpo? Tipo a função bool isDigit(char*); de C?

Ah, palavra é uma String e de no máximo 1 caractere.

Valeu pessoal!

inté,

4 Respostas

R

Se for exatamente e sempre 1 caracter, voce pode fazer assim:

boolean isDigit(String s) {
    char ch = s.charAt(0);
    return (ch >= 48 && ch <= 57);
}

Isso soh vai funcionar para numeros de 0 a 9. Se voce quiser algo alem disso, ai a historia muda.

Rafael

L

Legal Rafael. É isso mesmo que eu preciso. Não existe nenhum método já definido não? Eu dei uma olhada na documentação e não encontrei nada.

Se fosse para um tamanho indeterminado poderia ser assim?

boolean isDigit(String s) {
     for (int i = 0; i < s.length(); i++) {
           char ch = s.charAt(i);
           if (ch < 48 || ch > 57)
                return false;
     }
     return true;
 }

isso funcionaria né?! Mas eu ainda acho estranho não ter isso pronto.

Valeu Rafael!!!
Brigadão!

Inté,
Levi

R

Ai voce pode fazer assim:

boolean isDigit(String s) {
    return s.matches("[0-9]*");
}

Mas, de fato, nao ha algum metodo pronto para isso na API.

Rafael

T

De qualquer maneira, li um livro sobre performance onde o autor dizia, basicamente:

a) Evite usar try { } catch () à toa para processamento regular, exceto no seguinte caso: validar se uma string é numérica (tanto no caso inteiro, quanto no caso float e double). Nesse caso é mais rápido que uma expressão regular, por exemplo.

b) Esse truque também vale para outras linguagens como o PL/SQL.

Criado 28 de abril de 2005
Ultima resposta 29 de abr. de 2005
Respostas 4
Participantes 3