Skip to end of metadata
Go to start of metadata

A Java SE 6 tartalmaz egy újdonságot, amely megkönnyítheti azon pokol tüzében szenvedő lelkek életét, akik valaha megpróbálták a Java nyelvet arra használni, amire igazából alkalmatlan: konzolról beolvasni különféle dolgokat és oda formázva kiírni az eredményt (gyakori iskolai feladat C/C++, neadjisten Pascal berögződés alapján). A java.io.Console osztály több olyan metódust ad nekünk, amely igen hasznos a fenti esetben, azonban az osztály önmagában nem használható, működéséhez el kell kérnünk egy létező példányt a System.console() metódus meghívásával:

Java forrás
java.io.Console console = System.console();

Ezek után szabad a pálya, a JVM által használt rendszerkonzolon tudunk garázdálkodni, például egyszerűen beolvasni:

Java forrás
String line = console.readLine();

Tudunk prompt után beolvasni, és itt a prompt lehet formázott és paraméterezett (például ciklusváltozó adta érték):

Java forrás
line[count] = console.readLine("Enter %d. value:", count);

Hasonló a helyzet jelszó beolvasásánál, ott nem kerülnek visszhangozásra a beírt karakterek:

Java forrás
String password = console.readPassword("Enter your password:");

Végül C stílusban formázott kimenetet is kaphatunk, ha az alábbi példát követjük:

Java forrás
Double number = 3.1415;
System.console().format("[%8.2f]", number);

Ennek eredménye a következő lesz:

[    3,14]

Vagyis négy szóköz után két tizedesjegyre kerekítve a PI értéke. A %8.2f jelentése azonos a C alatti jelentésével: "igazítsd jobbra 8 karakternyit és kettő tizedesjegyre kerekítsd a számot". Használjuk egészséggel!

      
      
Page viewed times

4 Comments

  1. Auth Gábor AUTHOR

    Mennyi szenvedés, mennyi felesleges kín, mennyi tanuló, kik megutálták a Java nyelvet. Miért csak most? Miért most, amikor mindenki megszokta, hogy nincs normális konzol kezelés?! :)

    1. Ja, én most is utálom! :)
  2. Jó ez a console(), csak eclipse-ből indítva folyton null-t ad vissza. Így elveszítjük a kényelmes tesztelés lehetőségét.
    1. Auth Gábor AUTHOR

      Hát igen, mert ott nincs konzol, ezért implementálni kellene egy konzolt, de a fejlesztőeszközök itt-ott még nem készültek fel teljesen a Java SE 6 tudására... :(
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))