Java Modulo: Funktionsweise und Nutzen des Restwertoperators erklärt
Wenn eine Division nicht glatt aufgeht, bleibt ein Restwert übrig. Um diesen in Ihrem Programm sauber auszurechnen, steht Ihnen in Java der Modulo-Operator zur Verfügung. Er ist deutlich zuverlässiger als alternative Lösungswege und wird vor allem genutzt, um zu bestimmen, ob Zahlen gerade oder ungerade sind.
Der Modulo-Operator in Java
In allen gängigen Programmiersprachen können Sie die vier Grundrechenarten Addition, Subtraktion, Multiplikation und Division durchführen und zum Beispiel mit den passenden Java-Operatoren selbst umfangreiche Rechenaufgaben darstellen und lösen. Gerade bei der Division gibt es allerdings nicht nur im Bereich der Programmierung das Risiko, dass es kein glattes Ergebnis gibt. Werden zwei Ganzzahlen dividiert, besteht immer die Möglichkeit, dass ein Restwert übrigbleibt. Teilen Sie zum Beispiel 11 durch 4, bleibt ein Restwert von 3 (2 x 4 = 8, 11 - 8 = 3). Dies kann beim Programmieren zu Problemen führen.
- Flexibel: Hosting, das jedem Website-Traffic standhält
- Verlässlich: Inklusive 24/7-Support und persönlicher Beratung
- Sicher: Kostenloses SSL-Zertifikat, DDoS-Schutz und Backups
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 Restwertoperator bezeichnet. Es gibt verschiedene Situationen, in denen sein Einsatz bei der Programmierung sehr wichtig sein kann. Er kann beispielsweise 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 veranschaulicht das folgende Beispiel.
Wofür wird der Restwertoperator benötigt?
Bei der Division überprüft man vereinfacht gesagt, wie oft ein Divisor in einen Dividenden passt. Das Ergebnis ist der Quotient. Sind nun Dividend und Divisor beide im primitiven Java-Datentyp int (oder Integer) hinterlegt, können Sie den Restwert auch problemlos ohne Java Modulo ausrechnen. Der entsprechende 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);
}
}
javaDurch den Java-Befehl System.out.println
erhalten Sie diese Ausgabe:
Der Restwert ist: 3
javaDas ist zwar etwas umständlich, aber grundsätzlich möglich. Problematisch wird es allerdings, sobald mindestens einer der Operanten vom Typ float
oder double
ist, also ein Gleitkomma-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);
}
}
javaDer Restwert ist: 0.0
javaSyntax und Funktionsweise von Java Modulo
Der Modulo-Operator in Java gibt hingegen immer den exakten Restwert aus. Er führt zwar ebenfalls die Division aus, zeigt allerdings nicht deren Ergebnis an, sondern nur den Rest, der am Ende übrigbleibt. Er wird mit einem Prozentzeichen initiiert, sodass seine Syntax ganz einfach so aussieht:
Dividend % Divisor
javaFür unser Beispiel von oben würde Java Modulo dementsprechend so funktionieren:
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);
}
}
javaDie Ausgabe lautet:
Der Restwert ist: 3.0
javaBestimmen, ob Zahlen gerade oder ungerade sind
Java Modulo ermöglicht es Ihnen herauszufinden, ob eine Zahl gerade oder ungerade ist. Dafür bedient man sich einer einfachen Logik: Teilt man einen beliebigen Dividenden durch 2 und der Restwert ist 0, ist die Zahl gerade. Andernfalls muss die Zahl ungerade sein. Mit einer if-else-Anweisung lässt sich diese Annahme veranschaulichen. 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.");
}
}
}
javaWie zu erwarten, erhalten wir folgende Ausgabe:
Bei 11 handelt es sich um eine ungerade Zahl.
javaRestwert mit negativen Zahlen
Grundsätzlich 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);
}
}
javaDa der Dividend negativ ist, wird auch der Restwert immer negativ sein. Die Ausgabe lautet daher:
Der Restwert ist: -3
javaEs 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 überprü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);
}
}
javaNun erhalten wir diese Ausgabe:
Der Restwert vorher ist: -3
Der Restwert nachher ist: 1
java