tenho um método que verifica se possui apenas número um campo… só que eu precisar tirar o sinal de “-” (menos) para aceitar número negativo, alguém poderia me ajudar?
Isso é um assunto que já foi bastante discutido aqui no GUJ, se pesquisar você encontra.
Mas a base é a seguinte: O que é um número para você? um número inteiro? ou com decimais?
Se for somente números inteiros, tente converter utilizando Integer.parseInt, se funcionar, é um número
P
Pacato
assim o valor recebido vem em forma de string, (que pode vir -1 como -2,00 (que tbm teria que trocar , por . ))
só na hora de inserir no banco que eu converto (?::varchar)::numeric
Rodrigo_Sasaki
então use o método Double.parseDouble, mas nesse caso sim, você precisa tratar os separadores corretamente.
Pode ou alterar a String, ou setar um Locale diferente
P
Pacato
Valeu Rodrigo
Mas não tenho ideia de como fazer… pois só queria melhorar essa verificação minha verificando se tem apenas números e se os números são negativos e trocar a vírgula por ponto
Rodrigo_Sasaki
Faça em etapas.
1 - Deixe no formato correto, substitua os pontos e deixe como quer
2 - Tente converter para um double
Se tudo der certo, ele é um número, independente de ser negativo ou positivo, se não der, não é um número
Agora que você conseguiu, já passo uma dica. É legal encapsular essas coisas, pra não ter que ficar olhando pra código que você acha feio Algo assim:public boolean isNumber(String num){
boolean isNumber;
try{
Double.parseDouble(num);
isNumber = true;
} catch (NumberFormatException e){
isNumber = false;
}
return isNumber;
}
drsmachado
Embora dê praticamente no mesmo, eu prefiro usar a apache commons-lang e a classe NumberUtils. Ela possui métodos que facilitam essa análise.
isDigit que diz se o valor informado contém apenas dígitos e isNumber, indicando se o valor informado é um número.