In Java, fortunatamente, ci sono già metodi per convertire una stringa in un intero. Vi mostriamo nel nostro tutorial come usare questa funzione e che tipo di problemi possono verificarsi.
- Convertire stringa in intero
- Conversione da un'altra base
- Possibile eccezione
Convertire stringa in intero
Java vi fornisce un'interfaccia per convertire tipi di dati di tipo stringa in un integro. La funzione statica parseInt fa parte della classe Integer. Il metodo è usato come segue:
Stringa numeroStringa = "42";
int numeroInt = Integer.parseInt(numeroStringa);
La variabile int ora contiene il valore 42. Puoi anche usare il metodo statico valueOf se vuoi creare un oggetto Integer invece di una variabile int.
Integer numberInteger = Integer.valueOf(numberString);
Questo metodo ha lo stesso effetto, ma restituisce un oggetto Integer.
Conversione da un'altra base
Può capitare di voler convertire una stringa da un sistema numerico diverso dal sistema a dieci. Un esempio di questo sarebbe i numeri binari o esadecimali. Fortunatamente, questo è possibile con una leggera modifica del codice. Le funzioni parseInt e valueOf offrono la possibilità di passare un secondo parametro nella chiamata alla funzione che determina la base del numero nella stringa.
Stringa numberString = "101"; // 5 in binario
int numberInt = Integer.parseInt(numberString, 2); //Come base specifichiamo 2
La variabile numberInt ora contiene il valore 5, perché nella chiamata alla funzione è stato specificato che il numero nella numberString è un numero binario.
Analogamente, possiamo anche creare oggetti interi da una stringa.
String numberString = "A2D8"; // 41688 in esadecimale
Integer numberInteger = Integer.valueOf(numberString, 16); //Come base specifichiamo 16
L'oggetto Integer numberInteger ora riceve il valore 41688, poiché la numberString è un numero esadecimale, che abbiamo specificato con il 16 nella chiamata di funzione.
Eccezione possibile
I metodi parseInt e valueOf possono entrambi lanciare una NumberFormatException , se gli argomenti non permettono la conversione. Considerate il seguente esempio di codice:
Stringa numeroStringa = "abc123";
// Lancia un'eccezione
int numeroInt = Integer.parseInt(numeroStringa);
Qui noterete che cercare di convertire "abc123" in un numero decimale ovviamente fallirà. In questo caso, verrà lanciata una NumberFormatException. Tuttavia, se si prova a convertire la stessa stringa nel sistema esadecimale:
Stringa numeroStringa = "abc123";
// Non lancia nessuna eccezione perché abc123 esadecimale corrisponde a 1194684 decimale
int numeroInt = Integer.parseInt(numeroStringa, 16);
Allora, ha senso assicurarsi prima se una conversione può avere luogo. Inoltre, dovreste ovviamente usare anche la gestione delle eccezioni se non potete assicurarvi che le stringhe siano nel formato corretto.