Validar se o campo é int ou string

Tenho uma função de estoque que recebe a quantidade de estoque.
Como faço pra verificar se o valor passado é um int ou uma string?
preciso que ele seja int.
Achei uns topicos aqui que falam sobre isso, mas não entendi muito bem eles…
Obrigado pessoal

Procure por apache commons-beanutils, tem lá a classe NumberUtils que vai ajudar a resolver esse problema.

1 curtida

Se não quiser implementar no braço:

public static boolean isInt(String text) {
    try {
        Integer.parseInt(text);
        return true;
    } catch (Exception e) {
        return false;
    }
}
2 curtidas

é possivel também validar se possui somente numeros e e a string “-” ???
obrigado pelas participações

Você pode usar expressões regulares pra isso.

poderia me dar um exemplo?
nao conheco como funciona…

O NumberUtils possui métodos para tudo isso que você quer.

É simples, usa fors encadeados para verificar se em todas as posições de uma String possue algum número entre zero e 10 junto a String “-”

Talvez o que você precise fazer para resolver seu problema seja instanciar seu valor inteiro dentro do Try, caso não seja um valor inteiro você pode mandar uma mensagem na tela ou tratar setando um valor padrão dentro do catch.

Igual ao que o @staroski sugeriu?

1 curtida

como eu conseguiria resolver essa questão com o regex??

A classe String possui o método matches(String regex) que retorna true se aquela String atende à expressão regular e false caso contrário.

Para saber como montar sua expressão regular, leia a documentação da classe Pattern.

1 curtida

consegui validar para o inteiro, mas aproveitando o topico, estou tentando para validar cpf nesse formato:
000-000-000-00 com o regex: ("^\d{3}\x2E\d{3}\x2E\d{3}\x2D\d{2}$")
porém ele me da o seguinte erro Invalid escape sequence (valid ones are \b \t \n \f \r " ’ \ )
o que seria?

1 curtida

Em literais String a \ é um caractere de controle, então, se você quer incluir a \ na String ela precisa ser escapadadessa forma \\.

"^\\d{3}\\x2E\\d{3}\\x2E\\d{3}\\x2D\\d{2}$"

Valeu mano, ajudou muito aqui, não conhecia isso ainda!