Programma Java per verificare se una stringa è numerica

In questo programma imparerai diverse tecniche per verificare se una stringa è numerica o meno in Java.

Per comprendere questo esempio, è necessario conoscere i seguenti argomenti di programmazione Java:

  • Java String
  • Gestione delle eccezioni Java

Esempio 1: controlla se una stringa è numerica

 public class Numeric ( public static void main(String() args) ( String string = "12345.15"; boolean numeric = true; try ( Double num = Double.parseDouble(string); ) catch (NumberFormatException e) ( numeric = false; ) if(numeric) System.out.println(string + " is a number"); else System.out.println(string + " is not a number"); ) )

Produzione

 12345.15 è un numero

Nel programma sopra, abbiamo una Stringstringa denominata che contiene la stringa da controllare. Abbiamo anche un valore booleano numerico che memorizza se il risultato finale è numerico o meno.

Per verificare se la stringa contiene solo numeri, nel blocco try, utilizziamo Doubleil parseDouble()metodo di per convertire la stringa in un file Double.

Se genera un errore (cioè NumberFormatExceptionerrore), significa che la stringa non è un numero e numeric è impostato su false. Altrimenti, è un numero.

Tuttavia, se vuoi controllare se per un numero di stringhe, dovresti cambiarlo in una funzione. E, la logica si basa sul lancio di eccezioni, questo può essere piuttosto costoso.

Invece, possiamo usare la potenza delle espressioni regolari per verificare se la stringa è numerica o meno come mostrato di seguito.

Esempio 2: controlla se una stringa è numerica o non utilizza espressioni regolari (regex)

 public class Numeric ( public static void main(String() args) ( String string = "-1234.15"; boolean numeric = true; numeric = string.matches("-?\d+(\.\d+)?"); if(numeric) System.out.println(string + " is a number"); else System.out.println(string + " is not a number"); ) )

Produzione

 -1234.15 è un numero

Nel programma sopra, invece di utilizzare un blocco try-catch, usiamo regex per verificare se la stringa è numerica o meno. Questo viene fatto usando il matches()metodo di String .

Nel matches()metodo,

  • -?consente zero o più -per i numeri negativi nella stringa.
  • \d+controlla che la stringa debba contenere almeno 1 o più numeri ( \d).
  • (\.\d+)?consente zero o più del modello dato (\.\d+)in cui
    • \.controlla se la stringa contiene .(punti decimali) o meno
    • In caso affermativo, dovrebbe essere seguito da almeno uno o più numeri \d+.

Articoli interessanti...