jdk 1.5.0 Integer.decode bug?

DealeyLama

Mitglied
Hallo...
Könnte es sein, daß ich aus Zufall einen bug gefunden habe?
Probiert doch bitte das hier mal aus:

Int nInt = Integer.decode("08");

Ich bekomme dabei eine Exception:

Exception in thread "main" java.lang.NumberFormatException: For input string: "8"

Es scheint mir fast so als hätte decode probleme strings der Form "0X", wobei X für eine Ziffer größer als 7 steht, umzuwandeln. Ab "010" geht alles wieder klar.
Wäre nett wenn hier Jemand das ausprobieren und mir mitteilen könnte was das Ergebnis war.
Ich bin nämlich - wie ich zugeben muß - der Sache nicht ganz sicher.
Vielen Dank im voraus.

Alexander Schell
 
Hallo!

Das ist kein Bug sonder ganz richtig so...
Das Präfix "0" sagt der decode Methode, dass sie die darauffolgende Zahlenfolge im Oktalsystem interpretieren soll und dort sind nun mal die "gülten" Ziffern auf 01234567 beschränkt.
Code:
public class Main {

	public static void main(String[] args) {
		int i = Integer.decode("010").intValue(); //-> "8" Dezimal ->"10" Oktal
		System.out.println(i);
	}
}

Gruß Tom
 
Jetzt bin ich verwirrt... :)
Kann gut sein, daß ich mich verlesen habe. Ich ging vom Buchstaben 'O' aus als Metazeichen für einen als Oktal-Zahl zu codierenden String. Es ist also definitv die Ziffer '0' die die codierung in Oktal-Zahlen bedingt?
Immerhin macht es Sinn; warum sonst sollte die decode-Methode sonst gerade bei Ziffern größer als '7' abbrechen...

Danke für den Tipp und schönen Tag noch

Alexander Schell
 
Zurück