This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
java:formatting [2015/02/26 22:41] elkarafe removed |
java:formatting [2015/03/10 13:13] gthanos [Η Μέθοδος format] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | Τα stream αντικείμενα που εφαρμόζουν formatting είναι περιπτώσεις είτε PrintWriter, μια κλάση stream χαρακτήρων, ή PrintStream, μια κλάση byte stream . | + | ====== Μορφοποίηση Εξόδου ====== |
+ | |||
+ | **Σημείωση:** Τα μόνα //PrintStream// αντικείμενα που είναι πιθανό να χρειαστείτε είναι τα //System.out// και //System.err//. Όταν χρειάζεται να δημιουργήσετε ένα διαμορφωμένο stream εξόδου, χρησιμοποιήστε //PrintWriter//, και όχι //PrintStream//. | ||
+ | |||
+ | Όπως όλα τα αντικείμενα streams byte και χαρακτήρων, περιπτώσεις //PrintStream// και //PrintWriter// εφαρμόζουν ένα τυποποιημένο σύνολο μεθόδων εγγραφής για απλή έξοδο byte και χαρακτήρα. Επιπλέον, τόσο η //PrintStream// όσο και η //PrintWriter// εφαρμόζουν το ίδιο σύνολο μεθόδων για τη μετατροπή των εσωτερικών δεδομένων σε μορφοποιημένη έξοδο. Δύο δυνατότητες μορφοποίησης παρέχονται: | ||
+ | |||
+ | * To //print// και //println// μορφοποιεί μεμονωμένες τιμές σε έναν τυποποιημένο τρόπο. | ||
+ | * Το //format// μορφοποιεί σχεδόν οποιοδήποτε πλήθος τιμών βασισμένο σε ένα string μορφοποίησης ανάλογο με αυτό της printf στην γλώσσα C. | ||
+ | |||
+ | ==== Οι print και println Μέθοδοι ==== | ||
+ | |||
+ | Η κλήση των //print// ή //println// λαμβάνει ως όρισμα ένα String. Εάν υπάρχουν ορίσματα στις δύο αυτές μεθόδους που δεν είναι του τύπου String, τότε καλείται η μέθοδος ''toString()'', προκειμένου να μετατραπούν τα ορίσματα σε String. Μπορείτε να δείτε το παρακάτω παράδειγμα: | ||
+ | |||
+ | <code java Root.java> | ||
+ | public class Root { | ||
+ | public static void main(String[] args) { | ||
+ | int i = 2; | ||
+ | double r = Math.sqrt(i); | ||
+ | |||
+ | System.out.print("The square root of "); | ||
+ | System.out.print(i); | ||
+ | System.out.print(" is "); | ||
+ | System.out.print(r); | ||
+ | System.out.println("."); | ||
+ | |||
+ | i = 5; | ||
+ | r = Math.sqrt(i); | ||
+ | System.out.println("The square root of " + i + " is " + r + "."); | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Παρακάτω δίνεται το αποτέλεσμα της εκτέλεσης της κλάσης Root: | ||
+ | |||
+ | <code java> | ||
+ | The square root of 2 is 1.4142135623730951. | ||
+ | The square root of 5 is 2.23606797749979. | ||
+ | </code> | ||
+ | |||
+ | ==== Η Μέθοδος format ==== | ||
+ | |||
+ | Η μέθοδος //format// μορφοποιεί πολλαπλά στοιχεία που βασίζονται σε ενα //String// μορφοποίησης. Το String μορφoποίησης είναι ένα String που περιέχει και προσδιοριστές μορφοποίησης. Ε | ||
+ | |||
+ | Τα //strings// μορφοποίησης υποστηρίζουν πολλές δυνατότητες. Εδώ, θα καλύψουμε μόνο κάποια βασικά. | ||
+ | |||
+ | Το παράδειγμα //Root2// μορφοποιεί δύο τιμές με μία μόνο κλήση της //format//: | ||
+ | |||
+ | <code java Root2.java> | ||
+ | public class Root2 { | ||
+ | public static void main(String[] args) { | ||
+ | int i = 2; | ||
+ | double r = Math.sqrt(i); | ||
+ | |||
+ | System.out.format("The square root of %d is %f.%n", i, r); | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | H έξοδος της κλάσης Root2 δίνεται παρακάτω | ||
+ | <code java> | ||
+ | The square root of 2 is 1.414214. | ||
+ | </code> | ||
+ | |||
+ | Όλα οι προσδιοριστές μορφοποίησης αρχίζουν με τον χαρακτήρα '%' και ακολουθούν 1 ή 2 χαρακτήρες που καθορίζει το είδος της μορφοποιημένης εξόδου που παράγεται. Παρακάτω δίνονται μερικές από τις πιο συνήθεις μετατροπές: | ||
+ | |||
+ | * το %d μορφοποιεί μια τιμή integer ως μια δεκαδική τιμή. | ||
+ | * το %f μορφοποιεί μια floating point τιμή ως μια δεκαδική τιμή. | ||
+ | * το %n εισάγει έναν platform-specific χαρακτήρα αλλαγής γραμμής. | ||
+ | * το %x μορφοποιεί έναν integer ως μια δεκαεξαδική τιμή. | ||
+ | * το %s μορφοποιεί ένα String. | ||
+ | |||
+ | Το σύνολο των προσδιοριστών μορφοποίησης δίνεται παρακάτω: | ||
+ | {{:java:format.png}} | ||
+ | |||
+ | Παρακάτω δίνεται ένα παράδειγμα χρήσης των σημαντικότερων προσδιοριστών μορφοποίησης που παρουσιάστηκαν παραπάνω. | ||
+ | |||
+ | <code java TestFormat.java> | ||
+ | import java.util.Calendar; | ||
+ | import java.util.Locale; | ||
+ | |||
+ | public class TestFormat { | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | long n = 461012; | ||
+ | System.out.format("%d%n", n); // --> "461012" | ||
+ | System.out.format("%08d%n", n); // --> "00461012" | ||
+ | System.out.format("%+8d%n", n); // --> " +461012" | ||
+ | System.out.format("%,8d%n", n); // --> " 461,012" | ||
+ | System.out.format("%+,8d%n%n", n); // --> "+461,012" | ||
+ | |||
+ | double pi = Math.PI; | ||
+ | |||
+ | System.out.format("%f%n", pi); // --> "3.141593" | ||
+ | System.out.format("%.3f%n", pi); // --> "3.142" | ||
+ | System.out.format("%10.3f%n", pi); // --> " 3.142" | ||
+ | System.out.format("%-10.3f%n", pi); // --> "3.142" | ||
+ | System.out.format(Locale.FRANCE, | ||
+ | "%-10.4f%n%n", pi); // --> "3,1416" | ||
+ | |||
+ | Calendar c = Calendar.getInstance(); | ||
+ | System.out.format("%tB %te, %tY%n", c, c, c); // --> "May 29, 2006" | ||
+ | |||
+ | System.out.format("%tl:%tM %tp%n", c, c, c); // --> "2:34 am" | ||
+ | |||
+ | System.out.format("%tD%n", c); // --> "05/29/06" | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |Προηγούμενο: [[:java:character_streams | Streams Χαρακτήρων]]| Επόμενο: [[:java:class_path | Η κλάση Path ]] | | ||
- | Σημείωση: Τα μόνα PrintStream αντικείμενα που είναι πιθανό να χρειαστείτε είναι τα System.out και System.err. Όταν χρειάζεται να δημιουργήσετε ενα διαμορφωμένο stream εξόδου, χρεισημοποιήστε PrintWriter, οχι PrintStream. |