Ko deljenje ne deluje popolnoma, ostane ostanek. Java modulo operator je namenjen upo­šte­va­nju tega v vašem kodu. Operator je bistveno za­ne­slji­vej­ši od drugih rešitev in se uporablja predvsem za ugo­ta­vlja­nje, ali so števila siva ali liha.

Kaj je Java modulo operator?

V vseh pogostih pro­gram­skih jezikih lahko izvajate osnovne arit­me­tič­ne operacije se­šte­va­nja, od­šte­va­nja, množenja in deljenja. Za pri­ka­zo­va­nje in reševanje za­ple­te­nih izračunov lahko uporabite tudi Java operacije. Pri deljenju obstaja vedno tveganje, da bo ostalo ostanek. Če na primer delite 11 z 4, boste dobili ostanek 3 (2 x 4 = 8, 11 - 8 = 3). To lahko povzroči težave pri pro­gra­mi­ra­nju.

Za to je namenjen Java modulo operator. Poznan je tudi kot operator za ostanek, saj določi in vrne ostanek po delitvi dveh številk. Obstajajo različne situacije, v katerih je izredno pomemben. Operator se lahko uporabi na primer za ugo­ta­vlja­nje, ali je število sodo ali liho ali pa je število pra­šte­vi­lo. Čeprav obstajajo tudi drugi načini za določanje ostanka, ti hitro dosežejo svoje meje. To bo ponazoril naslednji primer.

Za kaj se uporablja operator za ostanek?

Preprosto povedano, deljenje vključuje pre­ver­ja­nje, ko­li­ko­krat se delitelj prilega v deljenec. Rezultat je količnik. Če sta deljenec in delitelj shranjena v pri­mi­tiv­nem po­dat­kov­nem tipu Java int (ali celo število), se ostanek lahko enostavno izrazi brez Java modulo. Koda bi bila naslednja:

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

Rezultat lahko nato ogledamo z ukazom Java System.out.println:

The remainder is: 3
java

Ta možnost je nekoliko okorna, vendar je v teoriji iz­ve­dlji­va. Vendar pa bomo naleteli na težave, če je vsaj eden od operandov float ali double, torej tip podatkov s plavajočo vejico. V tem primeru bo isti izračun dal drugačen 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

Kakšna je sintaksa modula v Javi?

Java modulo operator pa vedno vrne natančen ostanek. Izvede deljenje, vendar prikaže le ostanek, ne pa tudi kvocient. Ini­ci­a­li­zi­ra se z znakom odstotka, kar pomeni, da je njegova sintaksa naslednja:

Dividend % Divisor
java

Java modulo bi v zgornjem primeru izgledal takole:

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

Rezultat je nato:

The remainder is: 3.0
java

Kako ugotoviti, ali je število liho ali sodo

Java modulo se lahko uporabi za ugo­ta­vlja­nje, ali je število sodo ali liho. Izhaja iz preproste logike: če katero koli število delite z 2 in je ostanek 0, je sodo. V na­spro­tnem primeru je liho. To bomo po­na­zo­ri­li z izjavo if-else.

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

Kot pri­ča­ko­va­no, dobimo naslednji rezultat:

11 is an odd number.
java

Kako določiti ostanek ne­ga­tiv­ne­ga števila

Java modulo lahko uporabite tudi za izračun ostanka, kadar je deljenec ali delitelj negativen. Tukaj je preprost primer:

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

Ker je dividenda negativna, je tudi pre­o­sta­nek negativen:

The remainder is: -3
java

Vendar pa morda ne želite vedno dobiti ne­ga­tiv­ne­ga rezultata. Če želite vrniti pozitivni ostanek, lahko kodo nekoliko spre­me­ni­te. Najprej preverite, ali je ostanek manjši od 0. Če je, dodajte delitelja in dobili boste pozitivni ostanek. Tako bo izgledala koda:

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

Dobili bomo naslednji izpis:

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