Hoe gebruik je de Java modulo-operator?
Wanneer een deling niet perfect uitkomt, blijft er een rest over. De Java-modulo-operator is bedoeld om hiermee rekening te houden in uw code. De operator is aanzienlijk betrouwbaarder dan andere oplossingen en wordt voornamelijk gebruikt om te bepalen of getallen even of oneven zijn.
Wat is de Java modulo-operator?
In alle gangbare programmeertalen kun je de basisrekenkundige bewerkingen optellen, aftrekken, vermenigvuldigen en delen uitvoeren. U kunt ook Java-operatoren gebruiken om complexe berekeningen weer te geven en op te lossen. Met name bij delen bestaat altijd het risico dat er een rest overblijft. Als u bijvoorbeeld 11 door 4 deelt, blijft er een rest van 3 over (2 x 4 = 8, 11 - 8 = 3). Dit kan tot problemen leiden bij het programmeren.
Daarvoor dient de modulo-operator in Java. Deze operator wordt ook wel de restoperator genoemd, omdat hij de rest bepaalt en retourneert nadat twee getallen zijn gedeeld. Er zijn verschillende situaties waarin dit uiterst belangrijk is. De operator kan bijvoorbeeld worden gebruikt om te bepalen of een getal even of oneven is, of dat een getal een priemgetal is. Er zijn weliswaar ook andere manieren om de rest te bepalen, maar die bereiken al snel hun grenzen. Het volgende voorbeeld illustreert dat.
Waarvoor wordt de restoperator gebruikt?
Simpel gezegd houdt delen in dat je controleert hoe vaak een deler in een deeltal past. Het resultaat is het quotiënt. Als het deeltal en de deler beide zijn opgeslagen in het primitieve Java-gegevenstype int (of integer), kan de rest gemakkelijk worden uitgedrukt zonder Java modulo. De code zou er als volgt uitzien:
public class Main {
public static void main(String[] args) {
int dividend = 11;
int divisor = 4;
int remainder = dividend - (divisor * (dividend / divisor));
System.out.println("The remainder is: " + remainder);
}
}javaWe kunnen vervolgens het Java-commando System.out.println gebruiken om het resultaat te bekijken:
The remainder is: 3javaDeze optie is een beetje onhandig, maar in theorie wel mogelijk. We zullen echter problemen krijgen zodra ten minste één van de operanden een float of double is, dat wil zeggen een drijvende-kommagetal. In dat geval levert dezelfde berekening een ander resultaat op:
public class Main {
public static void main(String[] args) {
int dividend = 11;
double divisor = 4;
double remainder = dividend - (divisor * (dividend / divisor));
System.out.println("The remainder is: " + remainder);
}
}javaThe remainder is: 0.0javaWat is de syntaxis van modulo in Java?
De Java modulo-operator daarentegen geeft altijd de exacte rest weer. Deze voert een deling uit, maar toont alleen de rest, niet het quotiënt. Deze wordt geïnitialiseerd met een procentteken, wat betekent dat de syntaxis er als volgt uitziet:
Dividend % DivisorjavaJava modulo zou er als volgt uitzien wanneer het in het bovenstaande voorbeeld wordt gebruikt:
public class Main {
public static void main(String[] args) {
int dividend = 11;
double divisor = 4;
double remainder = dividend % divisor;
System.out.println("The remainder is: " + remainder);
}
}javaDe uitvoer is dan:
The remainder is: 3.0javaHoe bepaal je of een getal oneven of even is?
Java modulo kan worden gebruikt om te bepalen of een getal even of oneven is. Dit volgt uit eenvoudige logica: als je een getal door 2 deelt en de rest is 0, dan is het even. Anders is het oneven. We illustreren dit met een if-else-statement.
public class Main {
public static void main(String[] args) {
int dividend = 11;
if (dividend % 2 == 0) {
System.out.println(dividend + " is an even number.");
}
else {
System.out.println(dividend + " is an odd number.");
}
}
}javaZoals verwacht krijgen we het volgende resultaat:
11 is an odd number.javaHoe bepaal je de rest van een negatief getal?
Je kunt ook Java modulo gebruiken om de rest te krijgen wanneer het deelgetal of de deler negatief is. Hier is een eenvoudig voorbeeld:
public class Main {
public static void main(String[] args) {
int dividend = -11;
int divisor = 4;
int remainder = dividend % divisor;
System.out.println("The remainder is: " + remainder);
}
}javaAangezien het dividend negatief is, is het restant ook negatief:
The remainder is: -3javaMaar misschien wil je niet altijd een negatief resultaat krijgen. Als je een positief restgetal wilt teruggeven, kun je de code een beetje aanpassen. Controleer eerst of het restgetal kleiner is dan 0. Als dat zo is, tel je de deler erbij op en krijg je het positieve restgetal. Zo ziet die code er dan uit:
public class Main {
public static void main(String[] args) {
int dividend = -11;
int divisor = 4;
int remainder = dividend % divisor;
System.out.println("The remainder before is: " + remainder);
while (dividend < 0) dividend += divisor;
int positive_remainder = dividend % divisor;
System.out.println("The remainder after is: " + positive_remainder);
}
}javaWe krijgen de volgende uitvoer:
The remainder before is: -3
The remainder after is: 1java