Java programozás 4. – Kiíratás alapjai

A programozás során sokszor az a feladat, hogy valamilyen eredményt, vagy épp változók tartalmát írjuk ki a képernyőre. A kiíratás egyszerű kommunikáció a program és a felhasználó között. Ennek használata egyszerű, de vannak fontos szabályok, melyeket be kell tartani.

System.out.println() és System.out.print()

Kezdetben ezt a két metódust fogjuk kiíratásra használni, az alapvető igényeinket teljesen ki fogják szolgálni. A Java nyelvben a szövegeket idézőjelek “” közé tesszük. Nem macskaköröm, ahogy többször is hallottam. Na még egyszer: idézőjel.

Amit ilyen jelek közé írunk, azt a rendszer szövegnek tekinti. A kiíratás során a két metódusnak ilyen szövegeket szoktunk megadni, de ezekhez sokszor hozzá is fűzünk valamit. Lássunk akkor erre példákat:

int szam1 = 10;
int szam2 = 20;
int osszeg;
osszeg = szam1 + szam2;
System.out.println( "A szamok osszege: " );
System.out.println( osszeg );

A két kiemelt sorban láthatod azt, hogy a println() metódusnak odaadhatsz egy szöveget is, valamint egy változót is. A változót a kiíratás során átalakítja szöveggé, így a megjelenítés nem lesz gond. A két sort azonban össze is vonhatod:

System.out.println( "A szamok osszege: "+osszeg );

Ebben az esetben az történik, hogy az összeg változó tartalmát, ami egy egész szám, hozzáfűzi a szöveghez úgy, hogy közben át is alakítja azt is szöveg típusúvá.

Abban az esetben, amikor a + jel valamelyik oldalán szöveg található, akkor a + jel nem az összeadás, hanem az összefűzés műveletét jelenti!

Fontos, hogy az átalakítás csak a kiíratásra korlátozódik, az összeg változó továbbra is azt az egész számot tartalmazza, amivel továbbra is végezhetsz számításokat.

Az összefűzés tekintetében teljesen mindegy, hogy mi az összefűzés sorrendje, maximum a kiíratásnak nem lesz értelme:

System.out.println( osszeg+ " a szamok osszege." );

Egy fontos problémára felhívnám a figyelmet, ami sokszor gondot jelent. Tömörítsük még a programunkat, ne számítsuk ki külön változóba az összeget, hanem magába a kiíratásba tegyük bele:

int szam1 = 10;
int szam2 = 20;
System.out.println( "A szamok osszege: "+szam1+szam2 );

A kiemelt sorban van egy nagyon fontos probléma, de egy picit félreteszem, és azonnal visszatérünk.

Nézzük meg a következő programot: adott egy egész szám, írjuk ki a kétszeresét.

int szam = 7;
System.out.println( "A szam ketszerese: "+szam*2 ); // 14

Ez a megoldás teljesen helyes, és semmi gond nincs vele. Most írjuk ki a számot úgy, hogy hozzáadunk kettőt:

int szam = 7;
System.out.println( "A szam kettovel megnovelve: "+szam+2 ); // 72???

Mi a gond? Azonos rangú műveletek esetén mi a műveleti sorrend? Balról jobbra haladunk. Vagyis:

  1. kiírjuk a szöveget: “A szam ketszerese: “
  2. hozzáfűzzük ehhez a szam-ot. “A szam ketszerese: 7”
  3. hozzáfűzzük ehhez a 2-őt: “A szam ketszerese: 72”

Vagyis mivel a műveletek egyenrangúak, balról-jobbra haladva hatja végre. A szöveghez hozzáfűzi a a változót, majd az egészhez a 2-őt. Ezek alapján már értheted az átugrott feladatnál is mi a gond.

Mit tehetünk? Bíráljuk felül a műveleti sorrendet egy egyszerű zárójelezéssel.

int szam = 7;
System.out.println( "A szam kettovel megnovelve: "+(szam+2) ); // 9

A szorzás esetén miért nem volt gond? Azért, mert először a szorzást végezte el, majd annak az eredményét fűzte hozzá a szöveghez.

A kiíratás során a szövegben használhatunk olyan speciális vezérlő karaktereket, melyek valamilyen plusz funkciót adnak hozzá a kiíratáshoz. Ezekből keveset használunk ténylegesen, de azért felsorolom azokat is, amelyek használhatók, csak gyakorlati haszna már nincs. Fontos, hogy ezeket a vezérlő karaktereket minden esetben \ jellel (backslash) vezetjük be, ami a mögötte elhelyezkedő karakternek más jelentést ad.

  • \n – sordobás (új sort kezd ennél a pontnál
  • \t – tabulátor (alapérték által meghatározott mezőnyit ugrik)
  • \b – backspace (balra egy karakter visszatörlés)
  • \r – visszaáll a kurzor a sor elejére, bármit írunk ezután, a sorban lévő szöveget törli
  • \a – néhány terminálon esetleg megszólaltatja a gép speaker-jét
  • \\ – maga a \ karakter
  • \” – idézőjel

Lássunk erre ömlesztett példákat, minden különösebb magyarázat nélkül:

System.out.println( "foo\bbar" );
System.out.println( "foo\rbar" );
System.out.println( "foo\nbar" );
System.out.println( "Gyakran hasznalt vezerlo karakterek:\n\\n \\\\ \\\"" );
System.out.println("Elso szam:\t"+10);
System.out.println("Masodik szam:\t"+20);
System.out.println("Harmadik szam:\t"+30);

A println() és print() metódusok között annyi a különbség, hogy a println() úgy írja ki az adott szöveget, hogy utána új sort kezd. A print() pedig a kurzort a sor végén hagyja, vagyis a kiírt szövegek egymás mellé kerülnek. A példában azonban ha ismét kiírunk valamit, akkor az közvetlenül a Zsolt után folytatódik.

System.out.print("Kiss ");
System.out.print("Zsolt");

A kiíratásba akár komplexebb dolgok is belekerülhetnek, erre most csak egy példát írnék, a későbbi tananyagokban úgyis lesz több példa is ezekre, melyeket ez alapján meg fogsz érteni. Adott két szám, írd ki a kisebb szám kétszeresét:

int a = 15;
int b = 20;
System.out.println("A kisebb kétszerese: "+Math.min(a,b)*2);

Következő lecke: Metódusok

4 Replies to “Java programozás 4. – Kiíratás alapjai”

  1. Pingback: Java programozás 3. – Változók |

  2. Amikor azt akarjuk kiíratni: 7+2, akkor miért a “szám kétszerese” a kiírandó szöveg? Számomra úgy értelmes, hogy “a számnál kettővel több”.

  3. Amikor 10+20 összegét akarjuk kiíratni és tömörítésképpen összevonjuk a sorokat, akkor a helyes kiíratás ez lesz?: System.out.println( “A szamok osszege: “+(szam1+szam2));
    így ezt írja ki: A szamok osszege: 30
    Az á és ö betűk használhatók?
    A helytelen kiíratásnál, ami a fenti szövegben szerepel ez lesz a kiírás?:
    A szamok osszege1020

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

*

Ez a weboldal az Akismet szolgáltatását használja a spam kiszűrésére. Tudjunk meg többet arról, hogyan dolgozzák fel a hozzászólásunk adatait..