CyberStars

String Concatenation

Avem deja +, -, *, / și %. Dar + are un al doilea talent: pe lângă adunarea numerelor, poate lipi text. Acesta este modul clasic în Java de a combina text și variabile

public class Main {
    public static void main(String[] args) {
        String nume = "Quincy";
        int varsta = 32;
        double inaltime = 1.97;

        System.out.println("Salut. Ma numesc " + nume + ", am " + varsta + " ani si inaltimea de " + inaltime + " m");
    }
}

Ieșire

Salut. Ma numesc Quincy, am 32 ani si inaltimea de 1.97 m

Ce se întâmplă aici? Când punem un String și o altă valoare împreună cu +, Java convertește totul în text și le lipește. Asta se numește concatenare de string-uri (string concatenation)

Fii atent la spații

"Salut. Ma numesc " + nume

Avem un spațiu înainte de ghilimeaua de închidere, altfel am obține Salut. Ma numescQuincy, totul lipit. Asta e ceva ce aproape toată lumea greșește la început. Verifică-ți mereu spațiile


O subtilitate mică, dar foarte importantă

public class Main {
    public static void main(String[] args) {
        System.out.println("Rezultat: " + 2 + 3);
    }
}

Ce crezi că afișează asta? Rezultat: 5?

Afișează Rezultat: 23

De ce? Java citește de la stânga la dreapta. Începe cu "Rezultat: " (un String), apoi vede + 2: un String + un int = String, deci devine "Rezultat: 2". Apoi + 3 → "Rezultat: 23"

Dacă vrem 5, folosim paranteze ca să forțăm calculul matematic mai întâi

public class Main {
    public static void main(String[] args) {
        System.out.println("Rezultat: " + (2 + 3));
    }
}

Ieșire

Rezultat: 5

Acum (2 + 3) este calculat mai întâi (dând 5), apoi lipit de string. Ține minte regula asta, o să dai de ea în cod real


+ este suficient pentru cazuri simple, dar când ai mult text de combinat devine greu de citit, plin de ghilimele și de +-uri. Java are o alternativă mai curată: String.format()

public class Main {
    public static void main(String[] args) {
        String nume = "Tommy Vercetti";
        String mesaj = String.format("Salut, %s!", nume);
        System.out.println(mesaj);
    }
}

Ieșire

Salut, Tommy Vercetti!

%s este un placeholder (un loc rezervat): înseamnă „pune un String aici". Când Java rulează String.format(...), înlocuiește %s cu valoarea lui nume. Gândește-te la el ca la un șablon în care umpli spațiile goale


Există placeholder-e diferite pentru tipuri diferite

  • %s: String (sau orice altceva, Java îl convertește în text)
  • %d: număr întreg (int)
  • %f: număr cu virgulă (double)
public class Main {
    public static void main(String[] args) {
        String jucator = "Lance Vance";
        int eliminari = 47;
        double acuratete = 82.5;

        System.out.println(String.format("Jucator: %s | Eliminari: %d | Acuratete: %f", jucator, eliminari, acuratete));
    }
}

Ieșire

Jucator: Lance Vance | Eliminari: 47 | Acuratete: 82.500000

Stai, o grămadă de zecimale! În mod implicit, %f afișează 6 zecimale. Ca să controlezi asta, folosește %.Nf, unde N este numărul de zecimale dorit


%.2f înseamnă „afișează 2 zecimale". Acesta e cel pe care îl vei folosi cel mai des

public class Main {
    public static void main(String[] args) {
        double pret = 4.5;
        System.out.println(String.format("Pret: $%.2f", pret));
    }
}

Ieșire

Pret: $4.50

Java are și printf(), care formatează ȘI afișează într-un singur pas, așa că nu mai ai nevoie de String.format() plus System.out.println() separat

public class Main {
    public static void main(String[] args) {
        String nume = "Tommy";
        int scor = 1500;
        System.out.printf("Jucator: %s | Scor: %d%n", nume, scor);
    }
}

Observă %n la final: acela e caracterul de linie nouă pentru printf. Fără el, următoarea afișare ar continua pe aceeași linie

Folosește ce preferi. String.format() e bună când vrei să stochezi textul într-o variabilă, iar printf() e bună când vrei doar să-l afișezi imediat


Misiune: Tabloul de Scor

Sala de jocuri a stației tocmai a terminat un turneu. Afișează statisticile câștigătorului pe o singură linie.

Creează trei variabile: nume (String) pentru numele jucătorului, scor (int) pentru scorul total și rating (double) pentru ratingul de performanță. Apoi afișează o linie de forma Jucator: <nume> | Scor: <scor> | Rating: <rating>. Poți folosi + sau String.format(), cum preferi.

Exemplu

Cu numele Tommy Vercetti, scorul 1500 și ratingul 4.75, programul tău ar trebui să afișeze

Jucator: Tommy Vercetti | Scor: 1500 | Rating: 4.75