Division durch 0 abfangen mit Schleife

ThIwOl

Mitglied
Hallo,

ich möchte in meiner Methode eine Division durch 0 abfangen, ebenso soll geprüft werden ob die neue Eingabe eine gültige Zahl ist.

Java:
public static double dividieren(double a, double b) {
		while (b == 0) {
			System.out.print("Durch 0 kann nicht geteilt werden.");
			System.out.println(" Bitte eine neue Zahl eingeben.");
			try {
				b = s.nextDouble();
			} catch (Exception e) {
				System.out.print(s.next() + " ist keine gültige Zahl.");
				System.out.println(" Bitte eine neue Zahl eingeben.");
			}
		}
		return a / b;
	}
Wenn ich jetzt einen String eingebe springt er in den Catch-Block, aber auch wieder an den Anfang der Schleife was folgende Ausgabe erzeugt.
"string ist keine gültige Zahl. Bitte eine neue Zahl eingeben.
Durch 0 kann nicht geteilt werden. Bitte eine neue Zahl eingeben."

Wie kann ich also, wenn ich keine Zahl eingebe, die Meldung dass nicht durch 0 geteilt werden kann nicht anzeigen?

Danke!
 
Hi,
Die ganze Methode macht nicht so richtig Sinn.
Die Methode dividieren(doulbe a, double b) {...} wird jedes Mal aufgerufen, wenn eine Division ausgeführt werden soll. Was genau bezweckst du mit der while(b==0)- Schleife?
Du verwendest s? Was ist s? Eine Scanner- Instanz?


Mit der folgenden Methode wird eine Exception geworfen, falls b==0 ist, sonst wird die Division berechnet.
Java:
public static double dividieren(double a, double b) { 
	if(b==0) {
		throw new IllegalArgumentException("Division durch 0 ist nicht erlaubt");
	}
	else
		return a/b;
}
 
Zuletzt bearbeitet:
Du hast Recht, aber die Aufgabenstellung verlangt etwas anderes....
Ja, s ist eine Scanner Instanz.
Solange b 0 ist soll der Benutzer eine neue Zahl eingeben, aber was wenn er keine Zahl eingibt?
 
Du hast Recht, aber die Aufgabenstellung verlangt etwas anderes....
wie sieht die denn aus?
Ja, s ist eine Scanner Instanz.
ok, das ist schon mal hilfreich
Solange b 0 ist soll der Benutzer eine neue Zahl eingeben, aber was wenn er keine Zahl eingibt?
Das muss vorher abgefangen werden. (also bevor die Methode dividieren(...) {} augeführt werden soll.)
 
Zuletzt bearbeitet:
Es soll eine Methode erstellt werden die einen double zurückliefert(also das Ergebnis) und ihr sollen 2 double-Werte übergeben werden.
Mit einer Schleife (b == 0) soll sichergestellt werden dass nicht durch 0 dividiert wird.
Aber außerdem soll noch ein try/catch-Block in die Methode der ebenfalls in einer Schleife prüft ob die eingegebene Zahl überhaupt ein double ist.
 

Zurück
Oben