Wie kann ich in Java eine Division formulieren, wenn der Divisor möglicherweise 0 ist?
Ich muss in Java Rechenaufgaben erstellen, was auch gut klappt. Bis jetzt.
Doch bei einer Aufgabe muss ich durch 0 dividieren und teilen durch Null geht nicht, wie wir alle wissen.
Wie kann ich das in Java schreiben?
Vielen Dank im Voraus. :)
5 Antworten
Ganzzahl oder Fließkomma?
Bei Ganzzahlen solltest du den Divisor/Nenner vorher auf == 0 prüfen. (Ausnahmen abfangen kostet Ressourcen.)
Bei Fließkommazahlen (float, double) kannst du auch durch 0 teilen, dieser Fall ist im Zahlenberiech von IEEE-Fließkommazahlen ausdrücklich vorgesehen.
x / 0 ergibt
+ unendlich (INF); falls x > 0
- unendlich (-INF); falls x < 0
Nichtzahl (NAN); falls x = 0
Weiterrechnen mit diesen Größen ist nur sehr bedingt möglich. Also ist es sinnvoll, auf diese Fälle zu prüfen, wenn man möglicherweise durch 0 dividiert.
Übrigens kann es bei Fließkommazahl-Division auch zu Über- oder Unterlauf kommen, also Zahlen, deren Betrag zu groß / zu klein ist, um dargestellt zu werden. Dann ist das Ergebnis auch +/- unendlich bzw. 0, obwohl das mathematisch nicht sein dürfte. Von daher reicht allein ein Prüfen des Divisors/Nenners auf == 0 bei Fließkommazahl-Division nicht aus.
Es gibt zwei Möglichkeiten:
1) Prüfung der 2. Zahl auf 0
double quotient;
if (divisor == 0) {
// exception handling
}
else {
quotient = dividend / divisor;
}
2) Ein kontrolliertes Ausführen einer möglichen ArithmeticException
double quotient;
try {
quotient = dividend / divisor;
}
catch (ArithmeticException ex) {
// exception handling
}
Die erste Option wäre meines Erachtens die eleganteste Variante, denn sie würde lediglich einen Vergleich als Prüfung fordern, aber im Ausnahmefall kein extra Exception-Objekt im Speicher anlegen.
Du könntest zum Beispiel mit einem "if" abfragen, ob zahl2 = 0 ist. Wenn ja, dann gibst du "Fehler! Division durch Null!" aus. Wenn nein, dann rechnest du das Ergebnis aus wie bisher.
if (zahl1 == 1 && zahl2 == 0){
System.out.println("nein");
}
else{
zahlenpaar = zahl1 / zahl2;
System.out.println(zahlenpaar);
}
If zahl2 == 0 ...
Danke seeeeehr :D