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”); …}
//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.
[quote=nel]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.[/quote]
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.
[quote=JhowTroMundo][quote=nel]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.[/quote]
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.[/quote]
Por isso o ‘+’ ao fim.
Veja: [quote]+ 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*. [/quote]
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
Acho que o Character.isDigit ajuda:
http://www.java2s.com/Code/JavaAPI/java.lang/CharacterisDigitcharcharValue.htm
http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Character.html