English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial di Base Java

Controllo di流程 Java

Array di Java

Orientamento ad oggetti di Java (I)

Orientamento ad oggetti di Java (II)

Orientamento ad oggetti di Java (III)

Gestione delle Eccezioni Java

List di Java

Queue di Java

Map di Java

Set di Java

Input/Output (I/O) Java

Reader/Writer Java

Altri argomenti Java

Programma Java per verificare se una stringa è un numero

Completo di esempi Java

In questo programma, imparerai diversi metodi per verificare se una stringa è un numero in Java.

Esempio 1: verificare se una stringa è un numero

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.

Esempio 2: utilizzare l'espressione regolare (regex) per verificare se una stringa è un numero

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

Completo di esempi Java