Keď delenie nefunguje dokonale, zostane vám zvyšok. Operátor modulo v jazyku Java slúži na zohľadnenie tejto skutočnosti vo vašom kóde. Tento operátor je podstatne spoľahlivejší ako iné riešenia a používa sa predovšetkým na určenie, či sú čísla párne alebo nepárne.

Čo je to operátor modulo v jazyku Java?

Vo všetkých bežných programovacích jazykoch môžete vykonávať základné aritmetické operácie sčítania, odčítania, násobenia a delenia. Na zobrazenie a riešenie zložitých výpočtov môžete použiť aj operátory jazyka Java. Najmä pri delení vždy existuje riziko, že zostane zvyšok. Ak napríklad vydelíte 11 číslom 4, zostane vám zvyšok 3 (2 x 4 = 8, 11 - 8 = 3). To môže viesť k problémom pri programovaní.

Na to slúži operátor modulo v jazyku Java. Je tiež známy ako operátor zvyšku, pretože určuje a vráti zvyšok po vydelení dvoch čísel. Existujú rôzne situácie, v ktorých je mimoriadne dôležitý. Operátor sa dá použiť napríklad na zistenie, či je číslo párne alebo nepárne, alebo či je číslo prvočíslo. Hoci existujú aj iné spôsoby, ako určiť zvyšok, rýchlo narazia na svoje limity. Nasledujúci príklad to ilustruje.

Na čo sa používa operátor zvyšku?

Zjednodušene povedané, delenie spočíva v overení, koľkokrát sa deliteľ zmestí do deliteľa. Výsledkom je podiel. Ak sú deliteľ aj deliteľ uložení v primitívnom dátovom type Java int (alebo celé číslo), zvyšok sa dá ľahko vyjadriť bez modulu Java. Kód by vyzeral takto:

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

Potom môžeme použiť príkaz Java System.out.println na zobrazenie výsledku:

The remainder is: 3
java

Táto možnosť je trochu nepraktická, ale teoreticky je možná. Problémy však nastanú, akonáhle je aspoň jeden z operandov typu float alebo double, teda dátového typu s plávajúcou desatinnou čiarkou. V takomto prípade nám ten istý výpočet dá odlišný výsledok:

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

Aká je syntax modulu v Jave?

Na druhej strane, operátor modulo v jazyku Java vždy vráti presný zvyšok. Vykonáva delenie, ale zobrazuje len zvyšok, nie podiel. Inicializuje sa znakom percenta, čo znamená, že jeho syntax vyzerá takto:

Dividend % Divisor
java

Modulo v jazyku Java by vo vyššie uvedenom príklade vyzeralo takto:

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ýstup je potom:

The remainder is: 3.0
java

Ako zistiť, či je číslo párne alebo nepárne

Modulo v Jave sa dá použiť na zistenie, či je číslo párne alebo nepárne. Vyplýva to z jednoduchého logického úsudku: ak akékoľvek číslo vydelíte 2 a zvyšok je 0, je to párne číslo. V opačnom prípade je to nepárne číslo. Ilustrujeme to pomocou príkazu 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

Ako sme očakávali, dostali sme nasledujúci výsledok:

11 is an odd number.
java

Ako určiť zvyšok záporného čísla

Java modulo môžete použiť aj na získanie zvyšku, keď je deliteľ alebo deliteľ záporný. Tu je jednoduchý príklad:

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

Keďže dividenda je záporná, zvyšok je tiež záporný:

The remainder is: -3
java

Ale možno nechcete vždy dostať záporný výsledok. Ak chcete vrátiť kladný zvyšok, môžete kód trochu upraviť. Najskôr skontrolujte, či je zvyšok menší ako 0. Ak áno, pridajte deliteľ a dostanete kladný zvyšok. Takto bude kód vyzerať:

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

Dostaneme nasledujúci výstup:

The remainder before is: -3
The remainder after is: 1
java
Prejsť na hlavné menu