CyberStars

Operators

Am văzut deja +, -, *, și / în lecțiile anterioare. Java are câțiva operatori utili în plus pe care îi întâlnim acum

public class Main {
    public static void main(String[] args) {
        int a = 17;
        int b = 5;

        System.out.println(a + b);   // adunare
        System.out.println(a - b);   // scadere
        System.out.println(a * b);   // inmultire
        System.out.println(a / b);   // impartire
        System.out.println(a % b);   // rest (modulo)
    }
}

Ieșire

22
12
85
3
2

Cel interesant este a / b = 3, nu 3.4. De ce? Pentru că a și b sunt amândoi int. Java face împărțire întreagă când ambii operanzi sunt numere întregi: aruncă partea zecimală. Am văzut asta într-o lecție anterioară

Dacă vrem rezultatul cu zecimale, avem nevoie de cel puțin un double

public class Main {
    public static void main(String[] args) {
        double a = 17;
        int b = 5;
        System.out.println(a / b);   // 3.4
    }
}

Operatorul nou este %, numit modulo (sau „rest"). Ne dă restul împărțirii

public class Main {
    public static void main(String[] args) {
        System.out.println(17 % 5);   // 2
        System.out.println(20 % 4);   // 0
    }
}

17 / 5 = 3 cu rest 2, deci 17 % 5 = 2. 20 / 4 = 5 exact, deci restul este 0

% este incredibil de util. Exemplul clasic: să verificăm dacă un număr este par

public class Main {
    public static void main(String[] args) {
        int n = 10;
        if (n % 2 == 0) {
            System.out.println("par");
        } else {
            System.out.println("impar");
        }
    }
}

Java are scurtături utile

  • a++ este același lucru cu a = a + 1
  • a-- este același lucru cu a = a - 1
  • a += 5 este același lucru cu a = a + 5
  • a -= 3 este același lucru cu a = a - 3
  • a *= 2 este același lucru cu a = a * 2
  • a /= 4 este același lucru cu a = a / 4

Vei vedea i++ în bucle for absolut peste tot


Dar puterile? Java nu are un operator dedicat pentru putere. În schimb, folosim Math.pow

public class Main {
    public static void main(String[] args) {
        System.out.println(Math.pow(2, 3));   // 8.0
    }
}

Rezultatul este 8.0 (un double). Math.pow întoarce mereu un double, deci chiar și 2 la puterea 3 iese ca 8.0, nu 8


Ordinea operațiilor este aceeași ca în matematică. Înmulțirea și împărțirea înaintea adunării și scăderii

public class Main {
    public static void main(String[] args) {
        System.out.println(2 + 3 * 4);     // 14, nu 20
        System.out.println((2 + 3) * 4);   // 20
    }
}

Când ai dubii, adaugă paranteze. Oricum fac codul mai ușor de citit


Misiune: Diagnostic Motoare

Consola de diagnostic a stației are nevoie de o citire aritmetică rapidă a două valori de la senzori.

Creează două variabile int numite a și b (cu orice valori vrei). Apoi afișează, fiecare pe propria linie, rezultatul pentru: adunare, scădere, înmulțire, împărțire întreagă și rest.

Exemplu

Dacă cele două numere sunt 17 și 5, programul tău ar trebui să afișeze

22
12
85
3
2