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 String
stringa 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 Double
il parseDouble()
metodo di per convertire la stringa in un file Double
.
Se genera un errore (cioè NumberFormatException
errore), 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+
.