Kui jagamine ei õnnestu täie­li­kult, jääb alles jääk. Java modulo operaator on mõeldud selle arvesse võtmiseks teie koodis. Operaator on oluliselt usal­dus­väär­sem kui teised la­hen­dused ja seda ka­su­ta­takse peamiselt selleks, et määrata, kas numbrid on paaris- või paaritud.

Mis on Java modulo operaator?

Kõikides levinud prog­ram­mee­ri­mis­keel­tes saab teha liitmise, la­hu­ta­mise, kor­ru­ta­mise ja jagamise põhilisi arit­mee­tilisi tehteid. Java ope­raa­to­rite abil saab kuvada ja lahendada ka keerukaid arvutusi. Eriti jagamise puhul on alati oht, et jääb jääk. Näiteks kui jagate 11 neljaga, jääb jäägiks 3 (2 x 4 = 8, 11 - 8 = 3). See võib prog­ram­mee­ri­misel probleeme tekitada.

Selleks ongi Java modulo operaator. Seda tuntakse ka jäägi ope­raa­to­rina, kuna see määrab ja tagastab jäägi pärast kahe arvu jagamist. On mitmeid olukordi, kus see on äärmiselt oluline. Ope­raa­to­rit saab kasutada näiteks selleks, et teada saada, kas arv on paaris või paaritu või kas arv on algarv. Kuigi jääki on võimalik määrata ka muul viisil, jõuavad need viisid kiiresti oma pii­ri­desse. Järgmine näide il­lust­ree­rib seda.

Milleks ka­su­ta­takse jäägi ope­raa­to­rit?

Liht­sa­malt öeldes tähendab jagamine seda, et kont­rol­li­takse, mitu korda jagaja mahub ja­ga­ta­vasse. Tu­le­mu­seks on jagatis. Kui jagatav ja jagaja on mõlemad sal­ves­ta­tud Java al­gand­me­tüü­bis int (või täisarv), saab jäägi hõlpsasti väl­jen­dada ilma Java modulo abita. Kood näeks välja järgmine:

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

Seejärel saame tulemuse vaadata Java-käsu System.out.println abil:

The remainder is: 3
java

See valik on veidi ebamugav, kuid teo­ree­ti­li­selt võimalik. Siiski tekivad prob­lee­mid, kui vähemalt üks operand on float või double, st uju­ko­ma­ar­vu­line andmetüüp. Sel juhul annab sama arvutus teist­su­guse tulemuse:

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

Mis on modulo süntaks Java keeles?

Java modulo operaator aga annab alati täpse jäägi. See teostab jagamise, kuid näitab ainult jääki, mitte jagatist. See al­ga­ta­takse prot­sen­di­mär­giga, mis tähendab, et selle süntaks on järgmine:

Dividend % Divisor
java

Java modulo näeks eespool toodud näites välja järgmine:

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

Väljund on siis:

The remainder is: 3.0
java

Kuidas kindlaks teha, kas number on paaritu või paaris

Java modulo abil saab teada, kas number on paaris või paaritu. See tuleneb lihtsast loogikast: kui jagad mis tahes numbri 2-ga ja jääk on 0, on number paaris. Muidu on number paaritu. Il­lust­ree­rime seda if-else-lause abil.

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

Nagu oodatud, saame järgmise tulemuse:

11 is an odd number.
java

Kuidas määrata ne­ga­tiivse arvu jääk

Java modulo abil saab jäägi ka juhul, kui jagatav või jagaja on ne­ga­tiivne. Siin on lihtne näide:

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

Kuna dividend on ne­ga­tiivne, on ka jääk ne­ga­tiivne:

The remainder is: -3
java

Kuid alati ei pruugi soovida ne­ga­tiiv­set tulemust. Kui soovite saada po­si­tiivse jäägi, võite koodi veidi muuta. Esmalt kont­rol­lige, kas jääk on väiksem kui 0. Kui on, lisage jagaja ja saate po­si­tiivse jäägi. Kood näeb välja järgmine:

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

Saame järgmise väljundi:

The remainder before is: -3
The remainder after is: 1
java
Go to Main Menu