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.
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;
}
}
é 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.
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.
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?
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!