Como verificar se foi digitado um número

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