Ha az osztás nem tökéletes, akkor maradék marad. A Java modulo operátor ezt veszi figyelembe a kódban. Az operátor lényegesen megbízhatóbb, mint más megoldások, és elsősorban arra szolgál, hogy meghatározza, hogy a számok párosak vagy páratlanok.

Mi az a Java modulo operátor?

Minden általános programozási nyelvben elvégezhetők az alapvető aritmetikai műveletek: összeadás, kivonás, szorzás és osztás. A Java operátorok segítségével komplex számításokat is megjeleníthet és megoldhat. Különösen az osztás esetében mindig fennáll a maradék kockázata. Például, ha 11-et osztunk 4-gyel, akkor 3 maradékot kapunk (2 x 4 = 8, 11 - 8 = 3). Ez problémákat okozhat a programozásban.

Erre szolgál a Java modulo operátor. Más néven maradékoperátornak is nevezik, mivel két szám osztása után meghatározza és visszaadja a maradékot. Számos helyzetben rendkívül fontos szerepet játszik. Az operátor segítségével például meg lehet állapítani, hogy egy szám páros vagy páratlan, illetve hogy prímszám-e. Bár a maradékot más módszerekkel is meg lehet határozni, ezek gyorsan elérik határaikat. Ezt a következő példa szemlélteti.

Mire szolgál a maradék operátor?

Egyszerűen fogalmazva, az osztás során meg kell vizsgálni, hogy az osztó hányszor fér bele az osztandóba. Az eredmény a hányados. Ha az osztandó és az osztó egyaránt a primitív Java adattípusban, az int-ben (vagy egész számban) van tárolva, akkor a maradékot könnyen kifejezhetjük Java modulo nélkül. A kód a következőképpen nézne ki:

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

Ezután a Java System.out.println parancs segítségével megtekinthetjük az eredményt:

The remainder is: 3
java

Ez az opció kissé nehézkes, de elméletileg lehetséges. Azonban problémákba ütközünk, amint legalább az egyik operandus float vagy double, azaz lebegőpontos szám adattípus. Ebben az esetben ugyanaz a számítás eltérő eredményt ad:

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
java

Mi a modulo szintaxisa Java-ban?

A Java modulo operátor viszont mindig a pontos maradékot adja vissza. Osztást hajt végre, de csak a maradékot mutatja, nem a hányadost. A százalékjeljel kezdődik, vagyis a szintaxisa a következő:

Dividend % Divisor
java

A Java modulo a fenti példában a következőképpen nézne ki:

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

A kimenet ezután a következő:

The remainder is: 3.0
java

Hogyan lehet meghatározni, hogy egy szám páros vagy páratlan?

A Java modulo segítségével meg lehet állapítani, hogy egy szám páros vagy páratlan. Ez egyszerű logikából következik: ha bármely számot elosztunk 2-vel, és a maradék 0, akkor a szám páros. Ellenkező esetben páratlan. Ezt egy if-else utasítással szemléltetjük.

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

Ahogy vártuk, a következő eredményt kapjuk:

11 is an odd number.
java

Hogyan lehet meghatározni egy negatív szám maradékát?

A Java modulo funkcióval akkor is megkaphatja a maradékot, ha az osztandó vagy az osztó negatív. Íme egy egyszerű példa:

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

Mivel az osztalék negatív, a fennmaradó rész is negatív:

The remainder is: -3
java

De nem mindig szeretnél negatív eredményt kapni. Ha pozitív maradékot szeretnél visszaadni, akkor kissé módosíthatod a kódot. Először ellenőrizd, hogy a maradék kisebb-e 0-nál. Ha igen, add hozzá az osztót, és megkapod a pozitív maradékot. Így fog kinézni a kód:

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

A következő eredményt kapjuk:

The remainder before is: -3
The remainder after is: 1
java
Ugrás a főmenübe