Einführung
Der Modulo-Operator ist ein mathematischer Operator, der verwendet wird, um den Rest der Division zweier Zahlen zu finden. Dieser Operator wird durch das Symbol % dargestellt. In Java gibt der Modulo-Operator den Rest der Division der ersten Zahl durch die zweite Zahl zurück. In dieser Übung werden Ihnen einige Anwendungsfälle dieses Operators erläutert.
Modulo-Operator-Beispiel
In diesem Schritt werden wir die grundlegende Syntax des Modulo-Operators sehen und wie er auf ganzzahlige und Gleitkommazahlenvariablen verwendet werden kann. Wir werden auch sehen, wie er negative Zahlen behandelt.
- Erstellen Sie eine neue Datei namens
ModuloOperatorDemo.javamit dem Befehltouch. - Öffnen Sie die Datei in einem Texteditor wie
nano. - Fügen Sie den folgenden Code in die Datei ein:
public class ModuloOperatorDemo
{
public static void main(String[] args)
{
System.out.println("10 % 3 = " + 10 % 3);
System.out.println("3 % 10 = " + 3 % 10);
System.out.println("10.0 % 3.0 = " + 10.0 % 3.0);
System.out.println("10.0 % 3 = " + 10.0 % 3);
System.out.println("-10 % 3 = " + -10 % 3);
}
}
- Speichern Sie die Datei und beenden Sie den Texteditor.
- Kompilieren Sie den Code mit dem Befehl
javac ModuloOperatorDemo.java. - Führen Sie den Code mit dem Befehl
java ModuloOperatorDemoaus. - Der Code sollte die folgende Ausgabe erzeugen:
10 % 3 = 1
3 % 10 = 3
10.0 % 3.0 = 1.0
10.0 % 3 = 1.0
-10 % 3 = -1
Bedarf an Modulo-Operator
In diesem Schritt werden wir diskutieren, warum der Modulo-Operator benötigt wird, wenn der Divisionsoperator verwendet wird.
- Öffnen Sie die Datei
ModuloOperatorDemo.javain einem Texteditor. - Entfernen Sie den vorhandenen Code und ersetzen Sie ihn durch folgenden Code:
public class ModuloOperatorDemo
{
public static void main(String[] args)
{
int dividend = 10;
int divisor = 3;
int remainder = dividend - (divisor * (dividend/divisor));
System.out.print("The remainder is: " + remainder);
}
}
- Speichern Sie die Datei und beenden Sie den Texteditor.
- Kompilieren Sie den Code mit dem Befehl
javac ModuloOperatorDemo.java. - Führen Sie den Code mit dem Befehl
java ModuloOperatorDemoaus. - Der Code sollte die folgende Ausgabe erzeugen:
The remainder is: 1
Wenn der Dividend oder der Divisor keine Ganzzahl ist
In diesem Schritt werden wir sehen, wie der Modulo-Operator Dezimalzahlen behandeln kann.
- Öffnen Sie die Datei
ModuloOperatorDemo.javain einem Texteditor. - Entfernen Sie den vorhandenen Code und ersetzen Sie ihn durch folgenden Code:
public class ModuloOperatorDemo
{
public static void main(String[] args)
{
double dividend = 10;
int divisor = 3;
double remainder = dividend - (divisor * (dividend/divisor));
System.out.print("The remainder is: " + remainder);
}
}
- Speichern Sie die Datei und beenden Sie den Texteditor.
- Kompilieren Sie den Code mit dem Befehl
javac ModuloOperatorDemo.java. - Führen Sie den Code mit dem Befehl
java ModuloOperatorDemoaus. - Der Code sollte die folgende Ausgabe erzeugen:
The remainder is: 0.0
- Ändern Sie den Code in der Datei wie folgt:
public class ModuloOperatorDemo
{
public static void main(String[] args)
{
double dividend = 10;
int divisor = 3;
double remainder = dividend % divisor;
System.out.print("The remainder is: " + remainder);
}
}
- Speichern Sie die Datei und beenden Sie den Texteditor.
- Kompilieren Sie den Code erneut mit dem Befehl
javac ModuloOperatorDemo.java. - Führen Sie den Code mit dem Befehl
java ModuloOperatorDemoaus. - Der Code sollte jetzt die folgende Ausgabe erzeugen:
The remainder is: 1.0
ArithmeticException durch den Modulo-Operator
In diesem Schritt werden wir sehen, wie der Modulo-Operator eine Ausnahme wirft, wenn der Divisor null ist.
- Öffnen Sie die Datei
ModuloOperatorDemo.javain einem Texteditor. - Entfernen Sie den vorhandenen Code und ersetzen Sie ihn durch folgenden Code:
public class ModuloOperatorDemo
{
public static void main(String[] args)
{
System.out.print("The remainder is: " + 10 % 0);
}
}
- Speichern Sie die Datei und beenden Sie den Texteditor.
- Kompilieren Sie den Code mit dem Befehl
javac ModuloOperatorDemo.java. - Führen Sie den Code mit dem Befehl
java ModuloOperatorDemoaus. - Der Code sollte eine
ArithmeticExceptionwerfen wie folgt:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at ModuloOperatorDemo.main(ModuloOperatorDemo.java:3)
Gerade Zahlen finden
In diesem Schritt werden wir sehen, wie der Modulo-Operator verwendet werden kann, um zu überprüfen, ob eine Zahl gerade oder ungerade ist.
- Öffnen Sie die Datei
ModuloOperatorDemo.javain einem Texteditor. - Entfernen Sie den vorhandenen Code und ersetzen Sie ihn durch folgenden Code:
public class ModuloOperatorDemo
{
public static void main(String[] args)
{
int[] arr = {7, 5, 2, 4, 6, 19, 18, 25, 22};
for(int i=0; i<arr.length; i++)
{
int num = arr[i];
if((num % 2) == 0)
System.out.println(num + " ist gerade.");
else
System.out.println(num + " ist nicht gerade.");
}
}
}
- Speichern Sie die Datei und beenden Sie den Texteditor.
- Kompilieren Sie den Code mit dem Befehl
javac ModuloOperatorDemo.java. - Führen Sie den Code mit dem Befehl
java ModuloOperatorDemoaus. - Der Code sollte die folgende Ausgabe erzeugen:
7 ist nicht gerade.
5 ist nicht gerade.
2 ist gerade.
4 ist gerade.
6 ist gerade.
19 ist nicht gerade.
18 ist gerade.
25 ist nicht gerade.
22 ist gerade.
Sekunden in Minuten und Sekunden umwandeln
In diesem Schritt werden wir sehen, wie der Modulo-Operator verwendet werden kann, um Sekunden in Minuten und Sekunden umzuwandeln.
- Öffnen Sie die Datei
ModuloOperatorDemo.javain einem Texteditor. - Entfernen Sie den vorhandenen Code und ersetzen Sie ihn durch folgenden Code:
public class ModuloOperatorDemo
{
public static void main(String[] args)
{
int seconds = 401;
int minutes = seconds / 60;
int remainingSeconds = seconds % 60;
System.out.print(seconds + " Sekunden entsprechen " + minutes + " Minuten und " + remainingSeconds + " Sekunden");
}
}
- Speichern Sie die Datei und beenden Sie den Texteditor.
- Kompilieren Sie den Code mit dem Befehl
javac ModuloOperatorDemo.java. - Führen Sie den Code mit dem Befehl
java ModuloOperatorDemoaus. - Der Code sollte die folgende Ausgabe erzeugen:
401 Sekunden entsprechen 6 Minuten und 41 Sekunden
Abrufen der einzelnen Ziffern einer ganzen Zahl
In diesem Schritt werden wir sehen, wie der Modulo-Operator verwendet werden kann, um einzelne Ziffern aus einer Zahl zu extrahieren.
- Öffnen Sie die Datei
ModuloOperatorDemo.javain einem Texteditor. - Entfernen Sie den vorhandenen Code und ersetzen Sie ihn durch folgenden Code:
public class ModuloOperatorDemo
{
public static void main(String[] args)
{
int num = 7912064;
while(num > 0)
{
int lastDigit = num % 10;
num = num / 10;
System.out.print(lastDigit + " ");
}
}
}
- Speichern Sie die Datei und beenden Sie den Texteditor.
- Kompilieren Sie den Code mit dem Befehl
javac ModuloOperatorDemo.java. - Führen Sie den Code mit dem Befehl
java ModuloOperatorDemoaus. - Der Code sollte die folgende Ausgabe erzeugen:
4 6 0 2 1 9 7
Etwas alle n-ten Mal wiederholen
In diesem Schritt werden wir sehen, wie der Modulo-Operator verwendet werden kann, um eine Aktion alle n-ten Mal zu wiederholen.
- Öffnen Sie die Datei
ModuloOperatorDemo.javain einem Texteditor. - Entfernen Sie den vorhandenen Code und ersetzen Sie ihn durch folgenden Code:
public class ModuloOperatorDemo
{
public static void main(String[] args)
{
for(int i = 1; i <= 30; i++)
{
if(i % 5 == 0)
System.out.println("Mache etwas");
}
}
}
- Speichern Sie die Datei und beenden Sie den Texteditor.
- Kompilieren Sie den Code mit dem Befehl
javac ModuloOperatorDemo.java. - Führen Sie den Code mit dem Befehl
java ModuloOperatorDemoaus. - Der Code sollte die folgende Ausgabe erzeugen:
Mache etwas
Mache etwas
Mache etwas
Mache etwas
Mache etwas
Mache etwas
Eine Zahl auf einen bestimmten Bereich beschränken
In diesem Schritt werden wir sehen, wie der Modulo-Operator verwendet werden kann, um einen Wert auf einen bestimmten Bereich zu beschränken.
- Öffnen Sie die Datei
ModuloOperatorDemo.javain einem Texteditor. - Entfernen Sie den vorhandenen Code und ersetzen Sie ihn durch folgenden Code:
public class ModuloOperatorDemo
{
public static void main(String[] args)
{
String[] dayNames = {"Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"};
int dayOfTheMonth1 = 21;
String dayName1 = dayNames[(dayOfTheMonth1 - 1) % 7];
int dayOfTheMonth2 = 12;
String dayName2 = dayNames[(dayOfTheMonth2 - 1) % 7];
System.out.println(dayOfTheMonth1 + " fällt auf " + dayName1);
System.out.println(dayOfTheMonth2 + " fällt auf " + dayName2);
}
}
- Speichern Sie die Datei und beenden Sie den Texteditor.
- Kompilieren Sie den Code mit dem Befehl
javac ModuloOperatorDemo.java. - Führen Sie den Code mit dem Befehl
java ModuloOperatorDemoaus. - Der Code sollte die folgende Ausgabe erzeugen:
21 fällt auf Sonntag
12 fällt auf Freitag
Eine Zahl vollständig durch eine andere Zahl teilbar machen
In diesem Schritt werden wir sehen, wie der Modulo-Operator verwendet werden kann, um einen Wert so zu verändern, dass er von einem anderen Wert vollständig teilbar ist.
- Öffnen Sie die Datei
ModuloOperatorDemo.javain einem Texteditor. - Entfernen Sie den vorhandenen Code und ersetzen Sie ihn durch folgenden Code:
public class ModuloOperatorDemo
{
public static void main(String[] args)
{
int X = 291;
int Y = 17;
int remainder = X % Y;
X = X - remainder;
System.out.println("Die minimale Zahl, die subtrahiert werden muss, ist: " + remainder);
System.out.println("Die Zahl nach der Subtraktion ist: " + X);
}
}
- Speichern Sie die Datei und beenden Sie den Texteditor.
- Kompilieren Sie den Code mit dem Befehl
javac ModuloOperatorDemo.java. - Führen Sie den Code mit dem Befehl
java ModuloOperatorDemoaus. - Der Code sollte die folgende Ausgabe erzeugen:
Die minimale Zahl, die subtrahiert werden muss, ist: 2
Die Zahl nach der Subtraktion ist: 289
Zusammenfassung
Der Modulo-Operator ist ein mathematischer Operator, der verwendet wird, um den Rest der Division zweier Zahlen zu finden. In diesem Lab haben wir verschiedene Anwendungsfälle des Modulo-Operators behandelt, wie zum Beispiel das Überprüfen, ob eine Zahl gerade ist, das Konvertieren von Sekunden in Minuten und Sekunden, das Extrahieren einzelner Ziffern, das Wiederholen einer Aktion alle n-ten Mal, das Beschränken einer Zahl auf einen bestimmten Bereich und das Machen einer Zahl vollständig durch eine andere Zahl teilbar. Denken Sie daran, dass beim Verwenden des Modulo-Operators der Divisor nicht null sein darf, da sonst eine ArithmeticException ausgelöst wird.



