Wenn eine Division nicht glatt aufgeht, bleibt ein Restwert übrig. Um diesen in Ihrem Programm sauber aus­zu­rech­nen, steht Ihnen in Java der Modulo-Operator zur Verfügung. Er ist deutlich zu­ver­läs­si­ger als al­ter­na­ti­ve Lö­sungs­we­ge und wird vor allem genutzt, um zu bestimmen, ob Zahlen gerade oder ungerade sind.

Der Modulo-Operator in Java

In allen gängigen Pro­gram­mier­spra­chen können Sie die vier Grund­re­chen­ar­ten Addition, Sub­trak­ti­on, Mul­ti­pli­ka­ti­on und Division durch­füh­ren und zum Beispiel mit den passenden Java-Ope­ra­to­ren selbst um­fang­rei­che Re­chen­auf­ga­ben dar­stel­len und lösen. Gerade bei der Division gibt es al­ler­dings nicht nur im Bereich der Pro­gram­mie­rung das Risiko, dass es kein glattes Ergebnis gibt. Werden zwei Ganz­zah­len dividiert, besteht immer die Mög­lich­keit, dass ein Restwert üb­rig­bleibt. Teilen Sie zum Beispiel 11 durch 4, bleibt ein Restwert von 3 (2 x 4 = 8, 11 - 8 = 3). Dies kann beim Pro­gram­mie­ren zu Problemen führen.

Web­hos­ting
Das beste Web­hos­ting zum Spit­zen­preis
  • 3x schneller und 60 % günstiger
  • Maximale Ver­füg­bar­keit mit > 99.99 %
  • Nur bei IONOS: Bis zu 500 GB Spei­cher­platz inklusive

Es gibt daher in Java mit dem Modulo-Operator ein Tool, das den Restwert nach der Division zweier Zahlen ermittelt und ausgibt. Dieser wird auch als Rest­wert­ope­ra­tor be­zeich­net. Es gibt ver­schie­de­ne Si­tua­tio­nen, in denen sein Einsatz bei der Pro­gram­mie­rung sehr wichtig sein kann. Er kann bei­spiels­wei­se ermitteln, ob eine erwartete Zahl gerade oder ungerade ist oder ob es sich um eine Primzahl handelt. Zwar gäbe es auch andere Wege, um den Restwert zu ermitteln, diese stoßen aber unter Umständen schnell an ihre Grenzen. Das ver­an­schau­licht das folgende Beispiel.

Wofür wird der Rest­wert­ope­ra­tor benötigt?

Bei der Division überprüft man ver­ein­facht gesagt, wie oft ein Divisor in einen Di­vi­den­den passt. Das Ergebnis ist der Quotient. Sind nun Dividend und Divisor beide im pri­mi­ti­ven Java-Datentyp int (oder Integer) hin­ter­legt, können Sie den Restwert auch pro­blem­los ohne Java Modulo aus­rech­nen. Der ent­spre­chen­de Code könnte so aussehen:

public class Main {
	public static void main(String[] args) {
	int dividend = 11;
	int divisor = 4;
	int restwert = dividend - (divisor * (dividend / divisor));
	System.out.println("Der Restwert ist: " + restwert);
	}
}
java

Durch den Java-Befehl System.out.println erhalten Sie diese Ausgabe:

Der Restwert ist: 3
java

Das ist zwar etwas um­ständ­lich, aber grund­sätz­lich möglich. Pro­ble­ma­tisch wird es al­ler­dings, sobald min­des­tens einer der Operanten vom Typ float oder double ist, also ein Gleit­kom­ma-Datentyp. In diesem Fall erhalten wir bei der gleichen Rechnung ein anderes Ergebnis:

public class Main {
	public static void main(String[] args) {
	int dividend = 11;
	double divisor = 4;
	double restwert = dividend - (divisor * (dividend / divisor));
	System.out.println("Der Restwert ist: " + restwert);
	}
}
java
Der Restwert ist: 0.0
java

Syntax und Funk­ti­ons­wei­se von Java Modulo

Der Modulo-Operator in Java gibt hingegen immer den exakten Restwert aus. Er führt zwar ebenfalls die Division aus, zeigt al­ler­dings nicht deren Ergebnis an, sondern nur den Rest, der am Ende üb­rig­bleibt. Er wird mit einem Pro­zent­zei­chen initiiert, sodass seine Syntax ganz einfach so aussieht:

Dividend % Divisor
java

Für unser Beispiel von oben würde Java Modulo dem­entspre­chend so funk­tio­nie­ren:

public class Main {
	public static void main(String[] args) {
	int dividend = 11;
	double divisor = 4;
	double restwert = dividend % divisor;
	System.out.println("Der Restwert ist: " + restwert);
	}
}
java

Die Ausgabe lautet:

Der Restwert ist: 3.0
java

Bestimmen, ob Zahlen gerade oder ungerade sind

Java Modulo er­mög­licht es Ihnen her­aus­zu­fin­den, ob eine Zahl gerade oder ungerade ist. Dafür bedient man sich einer einfachen Logik: Teilt man einen be­lie­bi­gen Di­vi­den­den durch 2 und der Restwert ist 0, ist die Zahl gerade. An­dern­falls muss die Zahl ungerade sein. Mit einer if-else-Anweisung lässt sich diese Annahme ver­an­schau­li­chen. Dies ist der Code dazu:

public class Main {
	public static void main(String[] args) {
	int dividend = 11;
	if (dividend % 2 == 0) {
	System.out.println("Bei " + dividend + " handelt es sich um eine gerade Zahl.");
	}
	else {
	System.out.println("Bei " + dividend + " handelt es sich um eine ungerade Zahl.");
	}
	}
}
java

Wie zu erwarten, erhalten wir folgende Ausgabe:

Bei 11 handelt es sich um eine ungerade Zahl.
java

Restwert mit negativen Zahlen

Grund­sätz­lich können Sie den Restwert natürlich auch ermitteln, wenn Dividend oder Divisor negativ sind. Dies ist ein einfaches Beispiel dafür:

public class Main {
	public static void main(String[] args) {
	int dividend = -11;
	int divisor = 4;
	int restwert = dividend % divisor;
	System.out.println("Der Restwert ist: " + restwert);
	}
}
java

Da der Dividend negativ ist, wird auch der Restwert immer negativ sein. Die Ausgabe lautet daher:

Der Restwert ist: -3
java

Es ist aber nicht immer gewünscht, ein negatives Ergebnis zu erhalten. Wenn Sie den Code daher ein wenig anpassen, können Sie sich einen positiven Restwert ausgeben lassen. Dafür über­prü­fen Sie zunächst, ob der Restwert unter 0 liegt. Ist dies der Fall, addieren Sie den Divisor und erhalten dadurch einen positiven Restwert. So sieht der Code dafür aus:

public class Main {
	public static void main(String[] args) {
	int dividend = -11;
	int divisor = 4;
	int restwert = dividend % divisor;
	System.out.println("Der Restwert vorher ist: " + restwert);
	while (dividend < 0) dividend += divisor;
	int positiver_restwert = dividend % divisor;
	System.out.println("Der Restwert nachher ist: " + positiver_restwert);
	}
}
java

Nun erhalten wir diese Ausgabe:

Der Restwert vorher ist: -3
Der Restwert nachher ist: 1
java
Zum Hauptmenü