/ / Verifique entrada ilegal .nextLine Java [duplicado] - java, entrada, tratamento de erros

Verificar entrada ilegal .nextLine Java [duplicado] - java, entrada, tratamento de erros

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 № 1

Tente 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.

  1. o d é conhecido como Classes de caracteres predefinidas e uma expressão X+: significa que X ocorre uma ou mais vezes, conhecido como Quantificadores.

  2. 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.

  3. 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    {

}