English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In questo programma, imparerai diversi metodi per verificare se una stringa è un numero in Java.
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 + " È un numero"); else System.out.println(string + " Non è un numero"); } }
Quando si esegue il programma, l'output è:
12345.15 è un numero
Nel programma sopra, abbiamo una stringa chiamata string (String) che contiene la stringa da verificare. Abbiamo anche un valore booleano numeric che memorizza il risultato finale se è un valore numerico.
Per verificare se una stringa contiene solo numeri, nel blocco try, utilizziamo il metodo parseDouble() di Double per convertire la stringa in Double
Se viene lanciata un'eccezione (ossia NumberFormatException), significa che string non è un numero e imposta numeric a false. Altrimenti, significa che è un numero.
Ma se si desidera verificare più stringhe, è necessario modificarlo in una funzione. E la logica si basa sul lancio di eccezioni, il che potrebbe essere molto costoso.
Al contrario, possiamo utilizzare le funzionalità dell'espressione regolare per verificare se una stringa è un numero, come segue.
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 + " È un numero"); else System.out.println(string + " Non è un numero"); } }
Quando si esegue il programma, l'output è:
-1234.15 È un numero
Nel programma sopra, utilizziamo regex per controllare se la stringa è un numero, anziché utilizzare il blocco try-catch. Questo è fatto utilizzando il metodo matches() della Stringa.
Nel metodo matches()
-? Permette zero o più '-' per i numeri negativi nella stringa.
\\d+ Controlla se la stringa contiene almeno 1 o più numeri (\\d)
(\\.\\d+)? Permette zero o più occorrenze del modello dato (\\.\\d+), dove
\\. Controlla se la stringa contiene \\. (punto decimale)
Se lo è, dovrebbe almeno seguire uno o più numeri \\d+.