Eu tenho uma variável de seqüência de caracteres que é definida como userInput.nextLine (), quero verificar se essa seqüência de caracteres contém algo diferente de valores numéricos.
if(string has non-numeric) {
break;
}
Respostas:
2 para resposta № 1Tente Catch pode ser outra maneira alternativa.
try{
Long.parseInt(string);
faça o que sempre precisar com seu valor numérico.
}catch(NumberFormatException ex){
}
0 para resposta № 2
Se você deseja exibir, use um String.matches () com uma expressão regular. Ou você pode iterar sobre ele, char por char, usando String.charAt ().
0 para resposta № 3
Eu acho que isso vai dar
String str1 = "123456";
System.out.println(str1.matches("[^0-9]+"));
Saída será false
e se você fizer
System.out.println(str1.matches("[0-9]+"));
Saída será true
0 para a resposta № 4
usar string.matches(regex)
função. A expressão regular seria \d+
e verifique onde a saída é false
.
o
d
é conhecido como Classes de caracteres predefinidas e uma expressãoX+
: significa queX
ocorre uma ou mais vezes, conhecido como Quantificadores.se você deseja permitir sinal (
+ or -
) para ser contado como parte do valor numérico, você deve usar"[\+\-]?\d+"
expressão que corresponderá à string de entrada"+523"
ou"-563"
. Verifica a Documentação de classe de padrão para mais detalhes sobre esta expressão.Se você deseja permitir
"."
no valor numérico, como no caso do ponto decimal, use expressão regular:"[\+\-]?(\d+|\d*\.\d+)"
que corresponderá contra todo o tipo de entrada numérica gostar"1254"
,"-.256"
,"+58.235"
etc.
Escolha Qualquer um dos padrões que satisfaça sua necessidade e que corresponda à sua sequência de entrada, verificando se ela resulta em false
: o que significa que não é uma entrada numérica válida.
String pattern = "[\+\-]?(\d+|\d*\.\d+)" ; // or only \d+
//or [\+\-]?\d+
if(!string.matches(pattern)) // not a valid numeric input {
}