Martin Jung: Java Overflow abfangen

Beitrag lesen

Hi,

Nur das Problem ist, dass es keine Exception gibt wenn im Berechnungsergebnis eine größere Zahl als der erlaubte der deklarierten Variable rauskommt. Es kommen halt komische Ergebnisse raus wie 0 oder negative Zahlen. Das liegt wohl an der Bitverschiebung... oder so...
Wie kann ich nun einen solchen Überlauf der Variable abfangen? Gibt ja keine Exception aus...

1. wenn Du int-Primitive verwendest, wechsle auf den Typ long

2. Zur Vermeidung des "Überlaufs" (in Java gibt es keinen "klassischen Überlauf" - es ist Aufgabe des Programmierers sicherzustellen, dass der Wertebereich des verwendeten Typs für die Werte ausreichend ist) verwende eine Abbruchbedingung für die Iteration/Rekursion mittels Min/Max-Werten:
bei Primitiven vom Typ int -> definiert durch die Konstanten Integer.MIN_VALUE/Integer.MIN_VALUE
bei Primitiven vom Typ long -> definiert durch die Konstanten Long.MIN_VALUE/Long.MIN_VALUE

wenn das alles noch nicht reicht, könntest Du noch auf den Typ BigInteger ausweichen (wird aber langsamer, da intern mit Strings gearbeitet wird)

Viele Grüße,
Martin Jung