Kai dalybos re­zul­ta­tas nėra lygus nuliui, lieka likutis. Java modulo ope­ra­to­rius skirtas tai at­si­žvelg­ti jūsų kode. Šis ope­ra­to­rius yra žymiai pa­ti­ki­mes­nis nei kiti spren­di­mai ir daž­niau­siai nau­do­ja­mas norint nustatyti, ar skaičiai yra lyginiai ar ne­ly­gi­niai.

Kas yra Java modulo ope­ra­to­rius?

Visose po­pu­lia­rio­se prog­ra­ma­vi­mo kalbose galima atlikti pag­rin­di­nes arit­me­ti­nes ope­ra­ci­jas: sudėties, atimties, daugybos ir dalybos. Taip pat galite naudoti Java ope­ra­to­rius, kad būtų rodomi ir spren­džia­mi sudėtingi skai­čia­vi­mai. Kalbant apie dalybą, visada yra rizika, kad liks likutis. Pa­vyz­džiui, jei 11 pa­da­lin­si­te iš 4, likutis bus 3 (2 x 4 = 8, 11 - 8 = 3). Tai gali sukelti problemų prog­ra­ma­vi­mo metu.

Būtent tam ir skirtas Java modulo ope­ra­to­rius. Jis taip pat žinomas kaip likučio ope­ra­to­rius, nes jis nustato ir grąžina likutį po dviejų skaičių dalybos. Yra įvairių situacijų, kuriose tai yra ypač svarbu. Ope­ra­to­rius gali būti nau­do­ja­mas, pa­vyz­džiui, norint sužinoti, ar skaičius yra lyginis ar nelyginis, ar skaičius yra pirminis. Nors yra ir kitų būdų likučiui nustatyti, jie greitai pasiekia savo ribas. Tai iliust­ruo­ja toliau pateiktas pavyzdys.

Kam nau­do­ja­mas likučio ope­ra­to­rius?

Paprastai tariant, dalybos metu tikrinama, kiek kartų daliklis telpa į da­li­na­mą­jį. Re­zul­ta­tas yra dalmuo. Jei da­li­na­ma­sis ir daliklis yra saugomi pri­mi­ty­via­me Java duomenų tipe int (arba sveikasis skaičius), likutis gali būti lengvai iš­reikš­tas be Java modulo. Kodas atrodytų taip:

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

Tada galime naudoti Java komandą System.out.println, kad per­žiū­rė­tu­me rezultatą:

The remainder is: 3
java

Ši galimybė yra šiek tiek sudėtinga, bet teoriškai įmanoma. Tačiau problemos kils, kai bent vienas iš operandų bus float arba double, t. y. plau­kio­jan­čio­jo kablelio duomenų tipas. Šiuo atveju tas pats skai­čia­vi­mas duos kitokį rezultatą:

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

Kokia yra modulo sintaksė Java kalboje?

Kita vertus, Java modulo ope­ra­to­rius visada grąžina tikslų likutį. Jis atlieka dalybą, bet rodo tik likutį, o ne dalmenį. Jis ini­ci­juo­ja­mas procentų ženklu, todėl jo sintaksė atrodo taip:

Dividend % Divisor
java

Java modulo atrodytų taip, kaip nau­do­ja­mas aukščiau pa­teik­ta­me pavyzdyje:

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

Tada re­zul­ta­tas yra toks:

The remainder is: 3.0
java

Kaip nustatyti, ar skaičius yra nelyginis ar lyginis

Java modulo gali būti nau­do­ja­mas norint iš­si­aiš­kin­ti, ar skaičius yra lyginis, ar nelyginis. Tai išplaukia iš paprastos logikos: jei bet kokį skaičių pa­da­lin­si­te iš 2 ir likutis bus 0, tai skaičius yra lyginis. Kitaip jis yra nelyginis. Tai iliust­ruo­si­me if-else teiginiu.

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

Kaip ir tikėtasi, gauname tokį rezultatą:

11 is an odd number.
java

Kaip nustatyti neigiamo skaičiaus likutį

Java modulo taip pat galima naudoti norint gauti likutį, kai dalinamas skaičius arba daliklis yra neigiamas. Štai paprastas pavyzdys:

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

Kadangi di­vi­den­dai yra neigiami, likutis taip pat yra neigiamas:

The remainder is: -3
java

Tačiau ne visada norėsite gauti neigiamą rezultatą. Jei norite grąžinti teigiamą likutį, galite šiek tiek pakeisti kodą. Pir­miau­sia pa­tik­rin­ki­te, ar likutis yra mažesnis už 0. Jei taip, pridėkite daliklį ir gausite teigiamą likutį. Štai kaip atrodys šis kodas:

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

Gausime tokį rezultatą:

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