# 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](https://www.ionos.com/nl-be/digitalguide/websites/webontwikkeling/java-primitieven/) int (of integer), kan de rest gemakkelijk worden uitgedrukt zonder Java modulo. De code zou er als volgt uitzien:

```java
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);
	}
}
```

We kunnen vervolgens het Java-commando `System.out.println` gebruiken om het resultaat te bekijken:

```java
The remainder is: 3
```

Deze 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:

```java
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);
	}
}
```

```java
The remainder is: 0.0
```

## Wat 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:

```java
Dividend % Divisor
```

Java modulo zou er als volgt uitzien wanneer het in het bovenstaande voorbeeld wordt gebruikt:

```java
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);
	}
}
```

De uitvoer is dan:

```java
The remainder is: 3.0
```

## Hoe 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**.

```java
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.");
	}
	}
}
```

Zoals verwacht krijgen we het volgende resultaat:

```java
11 is an odd number.
```

## Hoe 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:

```java
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);
	}
}
```

Aangezien het dividend negatief is, is het restant ook negatief:

```java
The remainder is: -3
```

Maar 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:

```java
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);
	}
}
```

We krijgen de volgende uitvoer:

```java
The remainder before is: -3
The remainder after is: 1
```


This is a markdown version of: [https://www.ionos.com/nl-be/digitalguide/websites/webontwikkeling/java-modulo/](https://www.ionos.com/nl-be/digitalguide/websites/webontwikkeling/java-modulo/) for AI/LLM consumption.