Gyakorlati alapok I.
A DecimalFormat osztály
Ez a fejezet egyértelműen haladó szintű fogalmakkal dolgozik, a kezdő Java-tanuló nyugodtan átugorhatja. Az ok, amiért ide szerkesztettem, hogy az előző 2 fejezet...
...alapszinten, de kiválóan összefoglalta a konzolkiírási lehetőségeket, amelyek közül az utóbbi fejezet -emlékezzünk vissza-, kifejezetten számformázással foglalkozott. Ezen fejezet ennek szinte egyenes folytatása, de magasabb szintű fogalmakkal.
Nos, a Java-rendszeren belül létezik egy olyan osztály, amelyik segítségével még szofisztikáltabb módon állíthatunk be kimeneti számformátumokat. Az osztály neve: DecimalFormat, lokációja: java.text.DecimalFormat.
Az osztály rendkívül sokféle belső metódussal rendelkezik, ezek közül nézzük meg azt a rutint, amelyik újdonság A System.out.printf() és a System.out.format() című fejezetben foglaltakhoz képest.
Ez pedig egy számformázó minta előzetes megadása, amely alapján a függvény a kimeneti számformátumot beállítja.
Létrehozunk egy tetszőleges double típusú számot, a számforma mintáját (#) betesszük egy String objektumba, majd az említett osztályból létrehozunk egy számformázó objektumot is:
DecimalFormat szamFormazo = new DecimalFormat(minta);
Kis további trükközéssel a számformázó objektum sikeresen "összegyúrja" a bemeneti adatokat megfelelő kimeneti számformátumba. Ezek alapján nézzük meg a futtatható Java-kódokat!
-
###,###.### - a kimeneti double típusú számformátum 3 jegyenként csoportosítja
import java.text.*;
public class Main {
public static void main(String[] args) {
double szam = 123456.789;
String minta = "###,###.###";
DecimalFormat szamFormazo = new DecimalFormat(minta);
String szamFormazott = szamFormazo.format(szam);
System.out.println("Eredeti szam: " + szam + "\n"
+ "Minta: " + minta + "\n"
+ "Formazott szam: " + szamFormazott);
}
}
Végeredmény:
Eredeti szam: 123456.789
Minta: ###,###.###
Formazott szam: 123 456,789
-
###.## - a kimeneti double típusú számformátum egész számjegyeit nem csoportosítja, tizedesjegyeit kerekíti
import java.text.*;
public class Main {
public static void main(String[] args) {
double szam = 123456.789;
String minta = "###.##";
DecimalFormat szamFormazo = new DecimalFormat(minta);
String szamFormazott = szamFormazo.format(szam);
System.out.println("Eredeti szam: " + szam + "\n"
+ "Minta: " + minta + "\n"
+ "Formazott szam: " + szamFormazott);
}
}
Végeredmény:
Eredeti szam: 123456.789
Minta: ###.##
Formazott szam: 123456,79
-
$###,###.### - a kimeneti double típusú számformátum 3 jegyenként csoportosítja és dollárjellel ($) látja el
import java.text.*;
public class Main {
public static void main(String[] args) {
double szam = 123456.789;
String minta = "$###,###.###";
DecimalFormat szamFormazo = new DecimalFormat(minta);
String szamFormazott = szamFormazo.format(szam);
System.out.println("Eredeti szam: " + szam + "\n"
+ "Minta: " + minta + "\n"
+ "Formazott szam: " + szamFormazott);
}
}
Végeredmény:
Eredeti szam: 123456.789
Minta: $###,###.###
Formazott szam: $123 456,789
-
00000.000 - a kimeneti double típusú számformátumot a megadott mértékben 0-val tölti ki
import java.text.*;
public class Main {
public static void main(String[] args) {
double szam = 123.45;
String minta = "00000.000";
DecimalFormat szamFormazo = new DecimalFormat(minta);
String szamFormazott = szamFormazo.format(szam);
System.out.println("Eredeti szam: " + szam + "\n"
+ "Minta: " + minta + "\n"
+ "Formazott szam: " + szamFormazott);
}
}
Végeredmény:
Eredeti szam: 123.45
Minta: 00000.000
Formazott szam: 00123,450