Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hi,
ich habe ein kleines Verständnisproblem in Bezug auf eine NumberFormatException und komme einfach nicht dahinter, warum diese ausgelöst wird - obwohl es vermutlich etwas ganz triviales/offensichtliches ist...
Zum Problem:
Da ich einfach mal mein Wissen darüber, wie man Zahlen in verschiedene Zahlensysteme umrechnet, auffrischen wollte, dachte ich mir, ich bastel einen eigenen Algorithmus der z. B. Dezimalzahlen in Dualzahlen und Hexadesimalzahlen verwandeln kann. Das stellte sich auch als recht einfach heraus und hat eigentlich auf Anhieb geklappt - dachte ich zumindest. Jetzt habe ich aber festgestellt, dass mein Algorithmus nur mit Dezimalzahlen bis 1023 korrekt funktioniert, bei größeren Zahlen bricht das Programm mit einer NumberFormatException ab.
Hier der Code meiner Methode:
Das Problem scheint in Zeile 22 zu liegen, doch ich verstehe nicht warum die Exception ausgelöst wird - immerhin enthält der String nur Zahlen und bis 1023 klappt es ja problemlos. Kann mir das jemand erklären?
Diese 1-0-Kette wird ja bei Deinem Integer.parseInt(...) als Integer interpretiert. Wenn da mehr Bit-Stellen enthalten sind als die Zahl 2147483647 (max. Integer) Dezimalstellen hat, dann kann die Kette nicht als Zahl interpretiert werden. Wie schon geschrieben: Wozu die Bitfolge 1:1 als Zahl interpretieren? Gibt doch einfach den String zurück.
Vielen Dank für Eure schnellen Antworten! Ich habe Euren Rat befolgt und darauf verzichtet das Ergebnis in einen Integer zu verwandeln, sondern gebe es jetzt einfach als String aus und siehe da: Es funktioniert korrekt...
Wenn ich das also richtig verstehe, wurde die Exception produziert, weil z. B. die Darstellung der 10000000000 (1024 als Dualzahl) als String im Speicher aus mehr Bits besteht, als für den Datentyp Integer bereitgestellt werden und somit sozusagen zu groß zum "parsen" war? Ist das so richtig?
die Darstellung von 10000000000 als String oder auf andere Weise ist kein Problem,
nur gibt es keinen int 10000000000, deshalb kann String 10000000000 nicht korrekt verarbeitet werden
die Darstellung von 10000000000 als String oder auf andere Weise ist kein Problem,
nur gibt es keinen int 10000000000, deshalb kann String 10000000000 nicht korrekt verarbeitet werden