{"id":1372,"date":"2016-05-30T12:03:39","date_gmt":"2016-05-30T10:03:39","guid":{"rendered":"http:\/\/www.webotlet.hu\/?p=1372"},"modified":"2016-05-31T09:33:52","modified_gmt":"2016-05-31T07:33:52","slug":"java-kiegeszito-lecke-formazott-kiiratas","status":"publish","type":"post","link":"https:\/\/www.webotlet.hu\/?p=1372","title":{"rendered":"Java kieg\u00e9sz\u00edt\u0151 lecke &#8211; Form\u00e1zott ki\u00edrat\u00e1s"},"content":{"rendered":"<p>A programoz\u00e1s sor\u00e1n sokszor kell valamilyen eredm\u00e9nyt ki\u00edrnunk a k\u00e9perny\u0151re, vagy f\u00e1jlba. Addig nincs is gond, am\u00edg csak egy-k\u00e9t adat ki\u00edr\u00e1s\u00e1r\u00f3l van sz\u00f3, pl\u00e1ne, ha nincs semmilyen k\u00f6vetelm\u00e9ny a ki\u00edrt adatok igaz\u00edt\u00e1s\u00e1val kapcsolatban. Egy ilyen ki\u00edrat\u00e1s egyszer\u0171 esetekben teljesen elfogadott:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nString nev = &quot;Bela&quot;;\r\nint eletkor = 76;\r\nSystem.out.println( nev+&quot;: &quot;+eletkor+&quot; ev&quot; );\r\n<\/pre>\n<p>Akkor sincs gond, ha esetleg t\u00f6bb ember adatair\u00f3l van sz\u00f3, hiszen az eredm\u00e9ny ott lesz a k\u00e9perny\u0151n, maximum nem lesz sz\u00e9p:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nBela 76\r\nBendeguz 110\r\nPal 69\r\n<\/pre>\n<p>Egy darabig esetleg m\u00e9g lehet tr\u00fckk\u00f6zni azzal, hogy tabul\u00e1torokat tesz\u00fcnk a ki\u00edrat\u00e1sba, de az\u00e9rt ez nem a legmegnyugtat\u00f3bb megold\u00e1s, hiszen ha van egy nagyon hossz\u00fa n\u00e9v \u00e9s egy nagyon r\u00f6vid, akkor lehet, hogy a tabul\u00e1tor poz\u00edci\u00f3k nem fognak egyezni.<\/p>\n<p>Term\u00e9szetesen erre is van megold\u00e1s, ez pedig egy String met\u00f3dus.<\/p>\n<h4>String.format()<\/h4>\n<p>A String.format() met\u00f3dus egy nagyon r\u00e9szletesen param\u00e9terezhet\u0151, form\u00e1zott ki\u00edrat\u00e1st megval\u00f3s\u00edt\u00f3 seg\u00e9deszk\u00f6z. Megadhatjuk vele, hogy pontosan mekkora ter\u00fcletre szeretn\u00e9nk egy adott tartalmat igaz\u00edtani, azon bel\u00fcl pontosan hova, stb.<\/p>\n<p>A met\u00f3dus t\u00f6bb param\u00e9tert v\u00e1r. El\u0151sz\u00f6r meg kell neki adni, hogy pontosan milyen minta alapj\u00e1n szeretn\u00e9nk a ki\u00edrat\u00e1st l\u00e1tni, majd fel kell sorolni, hogy milyen \u00e9rt\u00e9keket szeretn\u00e9nk a minta megfelel\u0151 poz\u00edci\u00f3iba illeszteni. Az \u00e9rt\u00e9kek lehetnek konkr\u00e9t \u00e9rt\u00e9kek (liter\u00e1lok), vagy v\u00e1ltoz\u00f3k, melyek a benn\u00fck t\u00e1rolt \u00e9rt\u00e9keket fogj\u00e1k a mint\u00e1ba illeszteni. L\u00e1ssunk egy p\u00e9ld\u00e1t, \u00fagy egyszer\u0171bb lesz megmagyar\u00e1zni is.<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nString&#x5B;] nevek = new String&#x5B;] { &quot;Bela&quot;, &quot;Bendeguz&quot;, &quot;Pal&quot; };\r\nint&#x5B;] eletkorok = new int&#x5B;] { 76, 8, 102 };\r\n\r\nSystem.out.println( String.format(&quot;%-10s %-9s&quot;, &quot;Nev&quot;, &quot;Eletkor&quot;) );\r\nfor( int i = 0; i &lt; nevek.length; i++ )\r\n{\r\n  System.out.println( String.format(&quot;%-10s %-9d&quot;, nevek&#x5B;i], eletkorok&#x5B;i]) );\r\n}\r\n<\/pre>\n<p>A kimenet:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nNev        Eletkor  \r\nBela       76       \r\nBendeguz   8        \r\nPal        102  \r\n<\/pre>\n<p>Ez az\u00e9rt m\u00e1r sokkal bar\u00e1ts\u00e1gosabb. L\u00e1ssuk akkor, mi ez a met\u00f3dus.<\/p>\n<p>A met\u00f3dus \u00e1ltal\u00e1nos haszn\u00e1lata \u00edgy n\u00e9z ki: <strong>String.format( &#8220;minta&#8221;, adat1, adat2&#8230; );<\/strong> A minta elemei formailag k\u00f6t\u00f6ttek, de rengeteg m\u00f3don param\u00e9terezhet\u0151k. A mint\u00e1ban mindig r\u00f6gz\u00edteni kell az \u00e1br\u00e1zoland\u00f3 adatok t\u00edpus\u00e1t, \u00e9s azok sorrendj\u00e9t. A benne szerepl\u0151 adatok darabsz\u00e1m\u00e1nak meg kell egyeznie minta ut\u00e1n felsorolt liter\u00e1lok vagy v\u00e1ltoz\u00f3k darabsz\u00e1m\u00e1val.<\/p>\n<p>Az \u00e1br\u00e1zoland\u00f3 adat alapvet\u0151en k\u00e9tf\u00e9le lehet: sz\u00e1mszer\u0171 adat, vagy String. Sz\u00e1madatok eset\u00e9n arra is lehet\u0151s\u00e9g van, hogy 8-as \u00e9s 16-os sz\u00e1mrendszerbe \u00e1t is v\u00e1ltsuk az eg\u00e9sz \u00e9rt\u00e9keket.\u00a0 A mint\u00e1ban minden egyes megjelen\u00edtend\u0151 v\u00e1ltoz\u00f3 poz\u00edci\u00f3j\u00e1t egy % jel vezeti be. L\u00e1ssunk akkor a teljess\u00e9g ig\u00e9nye n\u00e9lk\u00fcl egy r\u00e9szletesebb list\u00e1t, konkr\u00e9t p\u00e9ld\u00e1kkal. Minden sor egy adott mint\u00e1val kezd\u0151dik, m\u00f6g\u00f6tte pedig a magyar\u00e1zat, hogy az mit \u00e9s hogyan jelen\u00edt meg.<\/p>\n<table border=\"1\" width=\"100%\" cellspacing=\"2\" cellpadding=\"2\">\n<tbody>\n<tr>\n<td width=\"8%\">%s<\/td>\n<td width=\"92%\">Sz\u00f6veges adat.<\/td>\n<\/tr>\n<tr>\n<td>%d<\/td>\n<td>Eg\u00e9sz sz\u00e1m.<\/td>\n<\/tr>\n<tr>\n<td>%f<\/td>\n<td>Lebeg\u0151pontos sz\u00e1m alap\u00e9rtelmezetten 6 tizedes jeggyel.<\/td>\n<\/tr>\n<tr>\n<td>%10s<\/td>\n<td>Sz\u00f6veges adat 10 karakteres mez\u0151m\u00e9rettel jobbra igaz\u00edtva. Ha a mez\u0151m\u00e9ret nagyobb, mint a megjelen\u00edtend\u0151 sz\u00f6veg, sz\u00f3k\u00f6z\u00f6kkel eg\u00e9sz\u00edti ki, ha a sz\u00f6veg nagyobb, akkor a teljes sz\u00f6veg megjelenik.<\/td>\n<\/tr>\n<tr>\n<td>%-10s<\/td>\n<td>Sz\u00f6veges adat 10 karakteres mez\u0151m\u00e9rettel balra igaz\u00edtva.<\/td>\n<\/tr>\n<tr>\n<td>%3d<\/td>\n<td>Eg\u00e9sz sz\u00e1m, 3 karakteres mez\u0151m\u00e9rettel jobbra igaz\u00edtva. Ha a sz\u00e1m t\u00f6bb, mint mez\u0151m\u00e9retnyi sz\u00e1mjeggyel rendelkezik, akkor a teljes sz\u00e1m megjelenik. Ha kisebb, sz\u00f3k\u00f6z\u00f6kkel eg\u00e9sz\u00fcl ki. A mez\u0151m\u00e9retbe a tizedes vesz\u0151 vagy pont is belesz\u00e1m\u00edt.<\/td>\n<\/tr>\n<tr>\n<td>%-3d<\/td>\n<td>Eg\u00e9sz sz\u00e1m, 3 karakteres mez\u0151m\u00e9rettel balra igaz\u00edtva.<\/td>\n<\/tr>\n<tr>\n<td>%03d<\/td>\n<td>Eg\u00e9sz sz\u00e1m, 3 karakteres mez\u0151m\u00e9rettel jobbra igaz\u00edtva. Ha a sz\u00e1m kevesebb sz\u00e1mjegyb\u0151l \u00e1ll, mint a mez\u0151m\u00e9ret, akkor null\u00e1kkal eg\u00e9sz\u00edti ki.<\/td>\n<\/tr>\n<tr>\n<td>%.3f<\/td>\n<td>Lebeg\u0151pontos sz\u00e1m 3 tizedes jeggyel jobbra igaz\u00edtva.<\/td>\n<\/tr>\n<tr>\n<td>%8.3f<\/td>\n<td>Lebeg\u0151pontos sz\u00e1m 8 karakteres mez\u0151m\u00e9rettel 3 tizedes jeggyel jobbra igaz\u00edtva.<\/td>\n<\/tr>\n<tr>\n<td>%-8.3f<\/td>\n<td>Lebeg\u0151pontos sz\u00e1m 8 karakteres mez\u0151m\u00e9rettel 3 tizedes jeggyel balra igaz\u00edtva.<\/td>\n<\/tr>\n<tr>\n<td>%+d<\/td>\n<td>Eg\u00e9sz sz\u00e1m, el\u0151jeles megjelen\u00edt\u00e9ssel (a pozit\u00edv el\u0151jel is ki\u00edrva).<\/td>\n<\/tr>\n<tr>\n<td>%+.3f<\/td>\n<td>Lebeg\u0151pontos sz\u00e1m, el\u0151jeles megjelen\u00edt\u00e9ssel, 3 tizedesjeggyel<\/td>\n<\/tr>\n<tr>\n<td>%,d<\/td>\n<td>Eg\u00e9sz sz\u00e1m, 3 sz\u00e1mjegyenk\u00e9nti sz\u00f3k\u00f6zzel a k\u00f6nnyebb olvashat\u00f3s\u00e1g\u00e9rt (ezres csoportos\u00edt\u00e1s)<\/td>\n<\/tr>\n<tr>\n<td>%,f<\/td>\n<td>Lebeg\u0151pontos sz\u00e1m, 3 sz\u00e1mjegyenk\u00e9nti sz\u00f3k\u00f6zzel a k\u00f6nnyebb olvashat\u00f3s\u00e1g\u00e9rt (ezres csoportos\u00edt\u00e1s)<\/td>\n<\/tr>\n<tr>\n<td>%%<\/td>\n<td>A sz\u00e1zal\u00e9kjel megjelen\u00edt\u00e9se.<\/td>\n<\/tr>\n<tr>\n<td>%n<\/td>\n<td>Sordob\u00e1s az aktu\u00e1lis helyen.<\/td>\n<\/tr>\n<tr>\n<td>%x<\/td>\n<td>Eg\u00e9sz sz\u00e1m, hexadecim\u00e1lis form\u00e1ban (16-os sz\u00e1mrendszerben) jobbra igaz\u00edtva.<\/td>\n<\/tr>\n<tr>\n<td>%-x<\/td>\n<td>Eg\u00e9sz sz\u00e1m, hexadecim\u00e1lis form\u00e1ban balra igaz\u00edtva.<\/td>\n<\/tr>\n<tr>\n<td>%-8x<\/td>\n<td>Eg\u00e9sz sz\u00e1m, hexadecim\u00e1lis form\u00e1ban balra igaz\u00edtva 8 karakteres mez\u0151m\u00e9rettel.<\/td>\n<\/tr>\n<tr>\n<td>%08x<\/td>\n<td>Eg\u00e9sz sz\u00e1m, hexadecim\u00e1lis form\u00e1ban, 8 karakteres mez\u0151m\u00e9rettel, balr\u00f3l null\u00e1kkal kieg\u00e9sz\u00edtve.<\/td>\n<\/tr>\n<tr>\n<td>%o<\/td>\n<td>Eg\u00e9sz sz\u00e1m, okt\u00e1lis form\u00e1ban (8-as sz\u00e1mrendszer) jobbra igaz\u00edtva.<\/td>\n<\/tr>\n<tr>\n<td>%-o<\/td>\n<td>Eg\u00e9sz sz\u00e1m, okt\u00e1lis form\u00e1ban balra igaz\u00edtva.<\/td>\n<\/tr>\n<tr>\n<td>%-8o<\/td>\n<td>Eg\u00e9sz sz\u00e1m, okt\u00e1lis form\u00e1ban balra igaz\u00edtva 8 karakteres mez\u0151m\u00e9rettel.<\/td>\n<\/tr>\n<tr>\n<td>%08o<\/td>\n<td>Eg\u00e9sz sz\u00e1m, okt\u00e1lis form\u00e1ban, 8 karakteres mez\u0151m\u00e9rettel, balr\u00f3l null\u00e1kkal kieg\u00e9sz\u00edtve.<\/td>\n<\/tr>\n<tr>\n<td>%,+025.3f<\/td>\n<td>Lebeg\u0151pontos sz\u00e1m, ezres csoportos\u00edt\u00e1ssal, jobbra igaz\u00edtva, el\u0151jeles megjelen\u00edt\u00e9ssel, 25 karakteres mez\u0151m\u00e9rettel, balr\u00f3l null\u00e1kkal felt\u00f6lt\u00e9ssel, 3 tizedesjegy pontoss\u00e1ggal.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Az utols\u00f3 p\u00e9ld\u00e1ban l\u00e1that\u00f3, hogy a fent eml\u00edtett alap form\u00e1z\u00e1sok ak\u00e1r a v\u00e9gletekig param\u00e9terezve egyszerre is haszn\u00e1lhat\u00f3k, m\u00e1r amennyiben van \u00e9rtelme. Mert eg\u00e9sz sz\u00e1m eset\u00e9n p\u00e9ld\u00e1ul nincs \u00e9rtelme tizedesjegyeknek, ilyen esetekben fut\u00e1si hib\u00e1t eredm\u00e9nyez a helytelen haszn\u00e1lat. Balra igaz\u00edt\u00e1s eset\u00e9n sincs \u00e9rtelme a balr\u00f3l null\u00e1kkal felt\u00f6lt\u00e9snek, ez\u00e9rt ez is fut\u00e1si hib\u00e1val j\u00e1r.<\/p>\n<p>L\u00e1ssunk akkor egy p\u00e9ld\u00e1t, ahol kuty\u00e1k adatait list\u00e1zzuk ki, igaz\u00edtva. Az egyszer\u0171s\u00e9g kedv\u00e9\u00e9rt a t\u00e1rol\u00f3 oszt\u00e1lyt most nem rakom k\u00fcl\u00f6n f\u00e1jlba, ilyenkor a Kutya oszt\u00e1lynak nem szabad publikusnak lennie, mivel minden publikus oszt\u00e1lynak azonos nev\u0171 .java f\u00e1jlban kell lennie. Ez\u00e9rt egy f\u00e1jlban csak egy publikus oszt\u00e1ly lehet.<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npackage formazottkiiratas;\r\n\r\nclass Kutya\r\n{\r\n  String nev;\r\n  char nem;\r\n  int kor;\r\n  double tomeg;\r\n  boolean ivartalanitott;\r\n\r\n  public Kutya(String nev, char nem, int kor, double tomeg, boolean ivart)\r\n  {\r\n    this.nev = nev;\r\n    this.nem = nem;\r\n    this.kor = kor;\r\n    this.tomeg = tomeg;\r\n    this.ivartalanitott = ivart;\r\n  }\r\n}\r\n\r\npublic class FormazottKiiratas\r\n{\r\n  public static void main(String&#x5B;] args)\r\n  {\r\n    Kutya&#x5B;] kutyak = new Kutya&#x5B;3];\r\n    kutyak&#x5B;0] = new Kutya(&quot;Bodri&quot;, 'K', 2, 25.0123456789, true);\r\n    kutyak&#x5B;1] = new Kutya(&quot;Nokedli&quot;, 'K', 11, 52.9285, false);\r\n    kutyak&#x5B;2] = new Kutya(&quot;Netti&quot;, 'S', 7, 33.5, true);\r\n    \r\n    for( Kutya k : kutyak )\r\n    {\r\n      System.out.println(String.format(&quot;%-8s %3s %3d %7.3f %s&quot;,\r\n                         k.nev, k.nem, k.kor, k.tomeg, k.ivartalanitott));\r\n    }\r\n  }\r\n<\/pre>\n<p>A kimenet:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nBodri      K   2  25,012 true\r\nNokedli    K  11  52,929 false\r\nNetti      S   7  33,500 true\r\n<\/pre>\n<p>A fentiek alapj\u00e1n m\u00e1r lehet k\u00eds\u00e9rletezni ezzel a met\u00f3dussal, \u00e9s rem\u00e9lhet\u0151leg megk\u00f6nny\u00edti bizonyos emelt informatika \u00e9retts\u00e9gi programoz\u00e1si feladaton bel\u00fcl a ki\u00edrat\u00e1ssal kapcsolatos kih\u00edv\u00e1sokat.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A programoz\u00e1s sor\u00e1n sokszor kell valamilyen eredm\u00e9nyt ki\u00edrnunk a k\u00e9perny\u0151re, vagy f\u00e1jlba. Addig nincs is gond, am\u00edg csak egy-k\u00e9t adat ki\u00edr\u00e1s\u00e1r\u00f3l van sz\u00f3, pl\u00e1ne, ha nincs semmilyen k\u00f6vetelm\u00e9ny a ki\u00edrt adatok igaz\u00edt\u00e1s\u00e1val kapcsolatban. Egy ilyen ki\u00edrat\u00e1s egyszer\u0171 esetekben teljesen elfogadott: <a class=\"more-link\" href=\"https:\/\/www.webotlet.hu\/?p=1372\">Tov\u00e1bb <span class=\"screen-reader-text\">  Java kieg\u00e9sz\u00edt\u0151 lecke &#8211; Form\u00e1zott ki\u00edrat\u00e1s<\/span><span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[101],"tags":[111,148,149,86,110,143,147],"class_list":["post-1372","post","type-post","status-publish","format-standard","hentry","category-java-kiegeszito-leckek","tag-format","tag-formazas","tag-formazott","tag-java","tag-kiiratas","tag-programozas","tag-string-format"],"_links":{"self":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/1372","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1372"}],"version-history":[{"count":19,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/1372\/revisions"}],"predecessor-version":[{"id":1657,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/1372\/revisions\/1657"}],"wp:attachment":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1372"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1372"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1372"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}