CyberStars

Methods

Până acum tot codul nostru a stat înghesuit în main. O metodă este o bucată de cod căreia îi dăm un nume, o scriem o singură dată și o refolosim de câte ori vrem. De fapt ai folosit deja una de zeci de ori: System.out.println este o metodă

Hai să ne scriem propria metodă

public class Main {
    public static void saluta(String nume) {
        System.out.println("Salut, " + nume);
    }

    public static void main(String[] args) {
        saluta("Cortez");
        saluta("Tommy Vercetti");
        saluta("Lance Vance");
    }
}

Ieșire

Salut, Cortez
Salut, Tommy Vercetti
Salut, Lance Vance

Am scris logica de salut o singură dată, dar am folosit-o de trei ori. Hai să descompunem linia care declară metoda

public static void saluta(String nume)

Fiecare parte are un sens, deocamdată explicăm doar esențialul

  • public: oricine poate apela această metodă
  • static: deocamdată, doar scrie-l. Îl vei înțelege în profunzime când vei studia clasele și obiectele
  • void: metoda nu întoarce nimic (doar afișează ceva)
  • saluta: numele metodei
  • (String nume): primește un parametru numit nume, de tip String. Observă tipul înaintea parametrului

Trebuie să punem public static void la început. Nu-ți face griji de ce deocamdată, doar ai încredere în acest tipar


O metodă poate și întoarce o valoare. În acel caz, în loc de void, scriem tipul valorii întoarse

public class Main {
    public static int aduna(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        int rezultat = aduna(2, 3);
        System.out.println(rezultat);
    }
}

Output 5

Metoda aduna primește două int-uri și întoarce un int. Înăuntru, folosim return ca să dăm înapoi valoarea. Imediat ce Java ajunge la return, metoda iese imediat: orice e scris după return este cod mort

Putem folosi rezultatul și direct într-o altă expresie

public class Main {
    public static int aduna(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        System.out.println(aduna(2, 3) * 10);
    }
}

Output 50. Java calculează mai întâi aduna(2, 3) = 5, apoi 5 * 10 = 50, apoi afișează


Tipul de retur trebuie să se potrivească cu ceea ce întoarcem de fapt

public class Main {
    public static int aduna(int a, int b) {
        return "salut";   // eroare
    }
}

Metoda promite să întoarcă un int, dar încearcă să dea înapoi un String. Java refuză să compileze. Este unul dintre obiceiurile stricte, dar utile, ale Java: multe bug-uri sunt prinse înainte ca programul să ruleze măcar


O metodă void doar își face treaba și iese. Putem totuși folosi return singur (fără valoare) ca să ieșim mai devreme

public class Main {
    public static void saluta(String nume) {
        if (nume.length() == 0) {
            return;   // iese mai devreme, niciun salut pentru nume goale
        }
        System.out.println("Salut, " + nume);
    }
}

Misiune: Împărțirea Prăzii

După o lovitură reușită, Tommy împarte prada în mod egal între membrii echipei. Vrei o metodă care face calculul o singură dată și pe care o poți refolosi pentru fiecare lovitură.

Scrie o metodă care primește prada totală și numărul de membri din echipă și întoarce partea fiecăruia (folosește împărțirea întreagă; ce nu se împarte exact se pierde). Apoi, în main, stochează prada într-o variabilă numită prada și mărimea echipei într-o variabilă numită membri, apelează metoda și afișează o linie de forma prada / membri = parte.

Exemplu

Dacă prada e 10000 și echipa are 4 membri, programul tău ar trebui să afișeze

10000 / 4 = 2500