Ja dalīšana neizdodas perfekti, paliek atlikums. Java modulo operators ir paredzēts, lai to ņemtu vērā jūsu kodā. Operators ir ie­vē­ro­ja­mi uz­ti­ca­māks nekā citi ri­si­nā­ju­mi un gal­ve­no­kārt tiek izmantots, lai noteiktu, vai skaitļi ir pāra vai nepāra.

Kas ir Java modulo operators?

Visās iz­pla­tī­tā­ka­jās prog­ram­mē­ša­nas valodās var veikt pamata arit­mē­tis­kās darbības: sa­skai­tī­ša­nu, atņemšanu, rei­zi­nā­ša­nu un dalīšanu. Ar Java ope­ra­to­riem var arī attēlot un risināt sa­rež­ģī­tus aprēķinus. Jo īpaši dalīšanas gadījumā vienmēr pastāv risks, ka paliks atlikums. Piemēram, ja dalāt 11 ar 4, atlikums būs 3 (2 x 4 = 8, 11 - 8 = 3). Tas var radīt problēmas prog­ram­mē­ša­nā.

Tieši tam paredzēts Java modulo operators. To sauc arī par atlikuma operatoru, jo tas nosaka un atgriež atlikumu pēc divu skaitļu dalīšanas. Ir dažādas si­tuā­ci­jas, kurās tas ir ļoti svarīgi. Operatoru var izmantot, piemēram, lai no­skaid­ro­tu, vai skaitlis ir pāra vai nepāra, vai arī vai skaitlis ir pirms­kait­lis. Lai gan ir arī citi veidi, kā noteikt atlikumu, tie ātri sasniedz savas robežas. To ilustrē šis piemērs.

Kādam nolūkam tiek izmantots atlikuma operators?

Vienkārši runājot, dalīšana nozīmē pārbaudīt, cik reizes dalītājs ietilpst dalāmajā. Rezultāts ir dalījuma rezultāts. Ja dalāmais un dalītājs ir abi saglabāti primitīvā Java datu tipā int (vai vesels skaitlis), atlikums var tikt viegli izteikts bez Java modulo. Kods iz­ska­tī­tos šādi:

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

Tad varam izmantot Java komandu System.out.println, lai apskatītu rezultātu:

The remainder is: 3
java

Šī opcija ir nedaudz ne­prak­tis­ka, bet teo­rē­tis­ki iespējama. Tomēr problēmas radīsies, tiklīdz vismaz viens no ope­ran­diem būs float vai double, tas ir, peldošā komata datu tips. Šajā gadījumā tas pats aprēķins dos mums atšķirīgu rezultātu:

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

Kāda ir modulo sintakse Java valodā?

Java modulo operators, no otras puses, vienmēr atgriež precīzu atlikumu. Tas veic dalīšanu, bet parāda tikai atlikumu, nevis dalījuma rezultātu. Tas tiek ini­cia­li­zēts ar procentu zīmi, kas nozīmē, ka tā sintakse izskatās šādi:

Dividend % Divisor
java

Java modulo iz­ska­tī­tos šādi, ja to izmantotu iepriekš minētajā piemērā:

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

Rezultāts ir šāds:

The remainder is: 3.0
java

Kā noteikt, vai skaitlis ir pāra vai nepāra

Java modulo var izmantot, lai no­skaid­ro­tu, vai skaitlis ir pāra vai nepāra. Tas izriet no vien­kār­šas loģikas: ja jebkuru skaitli dala ar 2 un atlikums ir 0, tas ir pāra skaitlis. Pretējā gadījumā tas ir nepāra skaitlis. To ilus­trē­sim ar if-else izteikumu.

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

Kā gaidīts, mēs iegūstam šādu rezultātu:

11 is an odd number.
java

Kā noteikt negatīva skaitļa atlikumu

Jūs varat izmantot arī Java modulo, lai iegūtu atlikumu, ja dalāmais vai dalītājs ir negatīvs. Šeit ir vienkāršs piemērs:

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

Tā kā dividende ir negatīva, arī atlikums ir negatīvs:

The remainder is: -3
java

Bet varbūt jūs ne vienmēr vēlaties iegūt negatīvu rezultātu. Ja vēlaties iegūt pozitīvu atlikumu, varat nedaudz modificēt kodu. Vispirms pār­bau­diet, vai atlikums ir mazāks par 0. Ja tā ir, pie­vie­no­jiet dalītāju, un iegūsiet pozitīvu atlikumu. Šāds būs koda izskats:

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

Mēs iegūsim šādu rezultātu:

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