Estou com um probleminha…(novidade)
Eu peço para digitar um número e o cara digita outro caracter, tipo $. O programa armazena, mas eu queria relatar o erro e pedir que redigitasse… como eu faço isso??
Imagino que seja algo como while(numero != ‘algumacoisa’){JOptionPane.showMessageDialog(null, “Digite apenas números”); …}
Como verificar se foi digitado um número
7 Respostas
//Retorna true se a String passada contiver apenas caracteres numericos
private boolean campoNumerico(String campo){
return campo.matches("[0-9]{"+campo.length()+"}");
}
Oi!
Nunca vi esse regex.
Porque não, apenas isso:
//Retorna true se a String passada contiver apenas caracteres numericos
private boolean campoNumerico(String campo){
return campo.matches("[0-9]+");
}
Edit: só para deixar claro. Não estou dizendo que o regex passado esteja errado, comentei apenas que nunca havia o visto. Antes que gere algum tipo de discussão.
Abraços.
Oi!Nunca vi esse regex.
Porque não, apenas isso://Retorna true se a String passada contiver apenas caracteres numericos private boolean campoNumerico(String campo){ return campo.matches("[0-9]+"); }Edit: só para deixar claro. Não estou dizendo que o regex passado esteja errado, comentei apenas que nunca havia o visto. Antes que gere algum tipo de discussão.
Abraços.
kkkk
Relaxa, Nel. Não sou esquentado.
Passando-se uma quantidade, o regex só vai validar a string até o caracter que corresponde a ela. Se eu passar um valor 5 e a String contiver 10 caracteres, o regex valida apenas os 5 primeiros. Passando-se o length da string, valida ela toda.
Não tem por quê.
Eu que não entendi o seu “+” no lugar no meu length, mas deve dar no mesmo.
Oi!Nunca vi esse regex.
Porque não, apenas isso://Retorna true se a String passada contiver apenas caracteres numericos private boolean campoNumerico(String campo){ return campo.matches("[0-9]+"); }Edit: só para deixar claro. Não estou dizendo que o regex passado esteja errado, comentei apenas que nunca havia o visto. Antes que gere algum tipo de discussão.
Abraços.
kkkk
Relaxa, Nel. Não sou esquentado.
Passando-se uma quantidade, o regex só vai validar a string até o caracter que corresponde a ela. Se eu passar um valor 5 e a String contiver 10 caracteres, o regex valida apenas os 5 primeiros. Passando-se o length da string, valida ela toda.
Não tem por quê.
Eu que não entendi o seu “+” no lugar no meu length, mas deve dar no mesmo.
Por isso o ‘+’ ao fim.
Veja:
+ Casa o elemento precedente uma ou mais vezes. Por exemplo, ba+ casa “ba”, “baa”, “baaa”, e assim por diante. Como visto na seção de teoria, esse metacaractere pode ser simulado em BRE através de aa*.
Certo?
Abraços!!
Saudações pessoal.
Regex é um assunto em que realmente estou apenas engatinhando, até entendi a solução que vcs apresentaram, mas ai surgiram duas duvidas:
1º Como eu faço a opção para reconhecer apenas uma vírgula(,) na expressão para poder fazer o parse para um Double?
2º Seria muito feio colocar o problema em um bloco try/catch e tratar o erro capturando a NumberFormatException? A performance seria prejudicada?
algo assim foi oque imaginei antes de ver o Regex:
boolen loop = "false";
Double numero = new Double(0.0);
while(loop)
{
String s = numeroDigitadoPeloUsuário();
try{
numero=Double.parseDouble(s);
loop = "true";
}
catch (NumberFormatException e)
{
System.out.println("Mensagem informando o usuário que o valor deve ser numérico");
}
} //fim do while
Agradeço pelas dicas
Abraço
ops, inverti o boolen no loop
mas acho que vcs entenderam a lógica da dúvida