/ / Controlla input illegale .nextLine Java [duplicato] - java, input, gestione degli errori

Controllare l'input illegale .nextLine Java [duplicato] - java, input, gestione degli errori

Ho una variabile di stringa impostata uguale a userInput.nextLine (), voglio verificare se questa stringa contiene qualcosa di diverso dai valori numerici.

if(string has non-numeric) {
break;
}

risposte:

2 per risposta № 1

Prova Catch potrebbe essere un altro modo alternativo.

try{
Long.parseInt(string);

fai quello che hai sempre bisogno di fare con il tuo valore numerico.

}catch(NumberFormatException ex){

}

0 per risposta № 2

Se vuoi metterti in mostra, usa String.matches () con un'espressione regolare. Oppure puoi iterare su di esso, char by char, usando String.charAt ().


0 per risposta № 3

Penso che questo farà

String str1 = "123456";
System.out.println(str1.matches("[^0-9]+"));

Produzione sarà false

e se lo fai

System.out.println(str1.matches("[0-9]+"));

Produzione sarà true


0 per risposta № 4

uso string.matches(regex) funzione. L'espressione regolare sarebbe \d+ e controlla dove l'output è false.

  1. Il d è conosciuto come Classi di caratteri predefinite e un'espressione X+: significa che X si verifica una o più volte, che è noto come quantificatori.

  2. se si desidera consentire il segno (+ or -) per essere conteggiato come parte del valore numerico, è necessario utilizzare "[\+\-]?\d+" espressione che corrisponderà alla stringa di input "+523" o "-563". Controlla il Documentazione sulla classe del modello per maggiori dettagli su questa espressione.

  3. Se si desidera consentire "." nel valore numerico come nel caso del punto decimale, quindi dovresti usare l'espressione regolare: "[\+\-]?(\d+|\d*\.\d+)" che corrisponderà contro tutti i tipi di input numerici piace "1254", "-.256", "+58.235" eccetera.

Scegli uno qualsiasi dei pattern che soddisfi le tue esigenze e che corrisponda alla stringa di input verificando che ciò comporti false: significa che non è un input numerico valido.

String pattern = "[\+\-]?(\d+|\d*\.\d+)" ; // or only \d+
//or [\+\-]?\d+
if(!string.matches(pattern)) // not a valid numeric input    {

}