A Java modulo operátor használata
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);
}
}javaEzután a Java System.out.println parancs segítségével megtekinthetjük az eredményt:
The remainder is: 3javaEz 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);
}
}javaThe remainder is: 0.0javaMi 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 % DivisorjavaA 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);
}
}javaA kimenet ezután a következő:
The remainder is: 3.0javaHogyan 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.");
}
}
}javaAhogy vártuk, a következő eredményt kapjuk:
11 is an odd number.javaHogyan 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);
}
}javaMivel az osztalék negatív, a fennmaradó rész is negatív:
The remainder is: -3javaDe 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);
}
}javaA következő eredményt kapjuk:
The remainder before is: -3
The remainder after is: 1java