Java: Strings in Integer umwandeln

In Java gibt es glücklicherweise bereits Methoden, um einen String in einen Integer umzuwandeln. Wir zeigen Ihnen in unserer Anleitung, wie Sie diese Funktion verwenden und was für Probleme dabei auftreten können.

String zu Integer umwandeln

Java bietet Ihnen eine Schnittstelle zur Umwandlung von Datentypen vom Typ String zu einem Integer. Die statische Funktion parseInt ist Teil der Klasse Integer. Die Methode wird folgendermaßen verwendet:

String numberString = "42";
int numberInt = Integer.parseInt(numberString);

Die int-Variable enthält nun den Wert 42. Ebenfalls können Sie die statische Methode valueOf verwenden, wenn Sie statt einer int-variable ein Integer-Objekt erzeugen möchten.

Integer numberInteger = Integer.valueOf(numberString);

Diese Methode hat denselben Effekt, liefert aber ein Integer-Objekt.

Umwandlung von einer anderen Basis

Es kann vorkommmen, dass Sie einen String aus einem anderen Zahlensystem als das Zehnersystem umwandeln möchten. Ein Beispiel hierfür wären Binär- oder Hexadezimalzahlen. Dies ist glücklicherweise durch eine leichte Änderung des Codes möglich. Die Funktionen parseInt und valueOf bieten die Möglichkeit einen zweiten Parameter im Funktionsaufruf zu übergeben, der die Basis der Zahl in dem String bestimmt.

String numberString = "101"; // 5 im Binärsystem
int numberInt = Integer.parseInt(numberString, 2); //Als Basis geben wir 2 an

Die Variable numberInt enthält nun den Wert 5, denn im Funktionsaufruf wurde angegeben, dass es sich bei der Zahl im numberString um eine Binärzahl handelt.

Analog können wir auch Integer-Objekte aus einem String erzeugen.

String numberString = "A2D8"; // 41688 im Hexadezimalsystem
Integer numberInteger = Integer.valueOf(numberString, 16); //Als Basis geben wir 16 an

Das Integer-Objekt numberInteger erhält nun den Wert 41788, da es sich beim numberString um eine Hexadezimalzahl handelt, was wir durch die 16 im Funktionsaufruf festgelegt haben.

Mögliche Exception

Die Methoden parseInt und valueOf können beide eine NumberFormatException werfen, wenn die Argumente eine Konvertierung nicht zulassen. Betrachtet Sie folgendes Code-Beispiel:

String numberString = "abc123";
// Wirft eine Exception
int numberInt = Integer.parseInt(numberString);

Hier werden Sie feststellen, dass der Versuch "abc123" in eine Dezimalzahl umzuwandeln, offensichtlich scheitern wird. In diesem Fall wird eine NumberFormatException ausgegeben. Versucht man dieselbe Zeichenkette allerdings in das Hexadezimalsystem umzuwandeln:

String numberString = "abc123";
// Wirft keine Exception denn abc123 hexadezimal entspricht 1194684 dezimal
int numberInt = Integer.parseInt(numberString, 16);

Dementsprechend ist es sinnvoll, vorher sicherzustellen, ob eine Umwandlung überhaupt stattfinden kann. Ergänzend dazu sollten Sie natürlich auch Exception-Handling verwenden, wenn Sie nicht sicherstellen können, dass die Strings im korrekten Format sind.