Como verificar se foi digitado um número

7 respostas
jmarlon
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); …}

7 Respostas

JhowTroMundo

//Retorna true se a String passada contiver apenas caracteres numericos private boolean campoNumerico(String campo){ return campo.matches("[0-9]{"+campo.length()+"}"); }

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.

JhowTroMundo

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.

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.

nel

JhowTroMundo:
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.

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!!

M

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

M

ops, inverti o boolen no loop
mas acho que vcs entenderam a lógica da dúvida

FabricioPJ

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

Criado 10 de junho de 2011
Ultima resposta 10 de jun. de 2011
Respostas 7
Participantes 5