Wie kann ich in Java eine Division formulieren, wenn der Divisor möglicherweise 0 ist?

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.


Gansa 
Fragesteller
 02.04.2018, 20:45

Vielen lieben Dank!

LG :)

0

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);

}


nudelesser20  02.04.2018, 20:07

Man kann gar nichts durch null teilen.

0
Gansa 
Fragesteller
 02.04.2018, 20:13
@nudelesser20

du hast die Fragestellung nicht verstanden

0
Gansa 
Fragesteller
 02.04.2018, 20:19

Danke seeeeehr :D

0
busspuss99  02.04.2018, 20:24
@Gansa

Reicht auch wenn du schreibtst: ^^

if (zahl2 == 0){

System.out.println("nein");

}

1
Gansa 
Fragesteller
 02.04.2018, 20:29
@busspuss99

Vielen Dank ich werde es ausprobieren :)

1