Operatorul mod (%) în Java
Sursă imagine: Alex Padurariu on Unsplash 

Ce face operatorul mod (%) în Java? Probabil că știi deja care sunt operațiile aritmetice de bază (+, -, / și *). Ei bine, în plus, pe lângă cele 4, vine operatorul mod (%), care dă restul.

Există o diferență de subtilitate când vine vorba de operatorul mod (sau modulo) și rest. Se pare că sunt 2 entități diferite, chiar dacă într-un proiect (normal, nu grosolan) nu-ți vei bate capul cu așa ceva…

Să luăm de exemplu operatorii mod (de la modul sau modulus) și rem (de la rest).

  • rezultatul lui A mod B va fi întotdeauna în intervalul [0, B);
  • rezultatul lui A rem B va fi întotdeauna în intervalul (-A, 0], dacă A este negativ și în intervalul [0, B), dacă A este pozitiv.

Facem abstracție de mod și rest, pentru că ne vom referi la acel rem și vei avea restul… Nu te complica și să nu crezi că te-am complicat cu explicația asta… E ca și cum îți zice medicul „Vezi să mai bagi și 20 de flotări pe zi dacă vrei să n-ai probleme cu spatele…”. Ții cont de sfat? O să ții…

Acum că totul e lămurit, hai să vezi și un exemplu concret:

1| int a = 10;
2| int b = 3;
3| int c = a % b;
4| System.out.println(c); // afișează 1 (restul este 1)

Practic, returnează restul…

Hai să vezi două exemple și cu numere negative:

1| int a = -10;
2| int b = 3;
3| System.out.println(a % b); // afișează -1 (pentru că primul număr este negativ...)
4| 
5| int c = 10;
6| int d = -3;
7| System.out.println(c % d); // afișează 1 (pentru că primul număr este pozitiv...)

Ține minte următoarele afirmații ca reguli generale:

  • dacă primul număr este negativ (deîmpărțitul…), iar celălalt număr este pozitiv (împărțitorul…), rezultatul va fi negativ: -A % B = negativ. Exemplu: -10 % 3 = -1.
  • dacă primul număr este pozitiv (deîmpărțiul…), iar celălalt număr este negativ (împărțitorul…), rezultatul va fi pozitiv: A % (-B) = pozitiv. Exemplu: 10 % (-3) = 1.
  • dacă ambele numere sunt negative, rezultatul va fi negativ: -A % (-B) = negativ. Exemplu: -10 % (-3) = -1.

În exemplele anterioare, A este deîmpărțitul, B este împărțitorul, iar rezultatul este restul.

Până aici totul e clar? Te rog să recitești cu atenție dacă nu ai înțeles ceva. Așa trebuie să faci de fiecare dată când înveți ceva nou. Poate că cine a scris lecția a omis unele chestii de importanță majoră sau poate crede că deja ar fi trebuit să ai unele noțiuni de bază… Tu trebuie doar să observi unde s-a produs „ruptura”, iar apoi să cauți pe internet de unul singur. Oricum înveți pe cont propriu, chiar dacă ai un profesor care te îndrumă…

Trebuie să ții minte și faptul că în Java nu există operatorul absolut, adică nu poți să scrii |-A| = A (sau |-10| = 10) sau chiar o funcție de tipul abs(-10) = 10.

Întreb încă o dată: totul e clar? Până acum ai observat că s-au făcut calcule cu ajutorul numerelor întregi (de tipul int). Ei bine, limbajul Java oferă posibilitatea de a folosi operatorul mod (%) și la numerele cu zecimale (de tipul float și double).

  • dacă ai o valoare de tipul float (sau double) și una de tipul int, rezultatul va fi de tipul float (sau double);
  • dacă ambele valori sunt de tipul float (sau double), rezultatul final va fi de tipul float (sau double).
1| double a = 10.0;
2| int b = 4;
3| System.out.println(a % b);  // afișează 2.0
4|
5| float c = 3.14F;
6| float d = 2.71F;
7| System.out.println(c % d);  // afișează 0.43000007

În limbajele un pic mai vechi, precum C și C++, nu vei putea folosi operatorul mod (%) la numerele cu zecimale. E bine de știut!

Un alt aspect foarte important este că atunci când calculezi restul a două numere, să zicem A % B, rezultatul va fi întotdeauna mai mare sau egal cu 0, dar mai mic decât B (în caz că A este pozitiv… lucru lămurit la începutul articolului…).

Să mai scriu că operatorul de împărțire (/) este diferit de operatorul mod sau modulo (%)? Împărțirea îți dă câtul, modulo îți dă restul…

Încă ceva: dacă folosești operatorul mod (%), iar împărțitorul (al doilea număr) este zero (0), rezultatul va fi NaN („Not a Number”) și vei primi o eroare (o excepție… ArithmeticException).

  • exemplu incorect: 10 % 0 = NaN;
  • exemplu „corect”: 0 % 10 = 0.

Vei întâlni des operatorul ăsta când ai nevoie să afli dacă un număr este par sau impar, chiar și la palindroame sau la afișarea inversului unui număr… Neapărat trebuie să știi cum se folosește și de unde să-l apuci!

Învață să fii profesionist!


Sursă imagine: Alex Padurariu on Unsplash

By projava

#JAVA

Abonează-te
Primește notificări pentru
guest
0 Comentarii
Cele mai vechi
Cele mai noi Cele mai votate
Păreri...
Vezi toate comentariile