java:formatting

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
java:formatting [2015/03/10 12:54]
gthanos [Οι print και println Μέθοδοι]
java:formatting [2020/03/09 21:22]
gthanos [Μορφοποίηση Εξόδου]
Line 1: Line 1:
 ====== Μορφοποίηση Εξόδου ====== ====== Μορφοποίηση Εξόδου ======
  
-**Σημείωση:** Τα μόνα //PrintStream// αντικείμενα που είναι πιθανό να χρειαστείτε είναι τα //System.out// και //System.err//. Όταν χρειάζεται να δημιουργήσετε ένα διαμορφωμένο stream εξόδου, χρησιμοποιήστε //PrintWriter//, και όχι //PrintStream//+Οι κλάσεις [[http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html|PrintStream]] και [[http://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html|PrintWriter]] υλοποιούν ένα κοινό σύνολο μεθόδων για εγγραφή χαρακτήρων. Παρέχονται οι παρακάτω δύο δυνατότητες μορφοποίησης:
  
-Όπως όλα τα αντικείμενα streams byte και χαρακτήρων, περιπτώσεις //PrintStream// και //PrintWriter// εφαρμόζουν ένα τυποποιημένο σύνολο μεθόδων εγγραφής για απλή έξοδο byte και χαρακτήρα. Επιπλέοντόσο η //PrintStream// όσο και η //PrintWriter// εφαρμόζουν το ίδιο σύνολο μεθόδων για τη μετατροπή των εσωτερικών δεδομένων σε μορφοποιημένη έξοδο. Δύο δυνατότητες μορφοποίησης παρέχονται: +  - Οι μέθοδοι //print// και //println// οι οποίες δέχονται μόνο ένα όρισμα είτε βασικού τύπου (int, long, double, byte etc), είτε αναφορικού τύπου ([[http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html|Object]] ή [[http://docs.oracle.com/javase/7/docs/api/java/lang/String.html|String]]) 
- +  - Η μέθοδος //format// μορφοποιεί με βάση ένα String μορφοποίησης ανάλογο με αυτό της //printf// στη γλώσσα C.
-  * To //print// και //println// μορφοποιεί μεμονωμένες τιμές σε έναν τυποποιημένο τρόπο. +
-  * Το //format// μορφοποιεί σχεδόν οποιοδήποτε πλήθος τιμών βασισμένο σε ένα string μορφοποίησης ανάλογο με αυτό της printf στην γλώσσα C.+
  
 ==== Οι print και println Μέθοδοι ==== ==== Οι print και println Μέθοδοι ====
  
-Η κλήση των //print// ή //println// λαμβάνει ως όρισμα ένα String. Εάν υπάρχουν ορίσματα στις δύο αυτές μεθόδους που δεν είναι του τύπου String, τότε καλείται η μέθοδος ''toString()'', προκειμένου να μετατραπούν τα ορίσματα σε String. Μπορείτε να δείτε το παρακάτω παράδειγμα:+Η κλήση των //print// ή //println// απαιτεί την εκτύπωση ενός αλφαριθμητικού. Εάν το όρισμα που λαμβάνουν οι μέθοδοι αυτές δεν είναι αλφαριθμητικό τότε  
 +  * για αναφορικούς τύπους που δεν είναι String καλείται η μέθοδος ''toString()'', προκειμένου να μετατραπούν τα ορίσματα σε String.  
 +  * για βασικούς τύπους, αυτοί μετατρέπονται πρώτα σε αναφορικούς (int --> [[http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html|Integer]], long --> [[http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html|Long]]) και στη συνέχεια καλείται η μέθοδος ''toString'' για αυτούς. 
 + 
 +<WRAP tip 80% center round> 
 +Η διαφορά μεταξύ των μεθόδων //print// και //println// είναι ότι η δεύτερη εκτυπώνει στο τέλος και ένα χαρακτήρα αλλαγής γραμμής. 
 +</WRAP> 
 + 
 +Μπορείτε να δείτε το παρακάτω παράδειγμα:
  
 <code java Root.java> <code java Root.java>
 public class Root { public class Root {
-    public static void main(String[] args) { +  public static void main(String[] args) { 
-        int i = 2; +    int i = 2; 
-        double r = Math.sqrt(i); +    double r = Math.sqrt(i); 
-         +     
-        System.out.print("The square root of "); +    System.out.print("The square root of "); 
-        System.out.print(i); +    System.out.print(i); 
-        System.out.print(" is "); +    System.out.print(" is "); 
-        System.out.print(r); +    System.out.print(r); 
-        System.out.println(".");+    System.out.println(".");
  
-        i = 5; +    i = 5; 
-        r = Math.sqrt(i); +    r = Math.sqrt(i); 
-        System.out.println("The square root of " + i + " is " + r + "."); +    System.out.println("The square root of " + i + " is " + r + "."); 
-    }+  }
 } }
 </code> </code>
  
-Αυτή είναι η έξοδος της Root:+Παρακάτω δίνεται το αποτέλεσμα της εκτέλεσης της κλάσης Root:
  
 <code java> <code java>
Line 38: Line 44:
 </code> </code>
  
-==== Η Μέθοδος format ====+==== Η μέθοδος format ή printf ====
  
-Η μέθοδος //format// μορφοποιεί πολλαπλά στοιχεία που βασίζονται σε ενα //string// μορφής. Το string μορφής αποτελείται από //static// κείμενο με ενσωματωμένα προσδιοριστικά μορφής. Εκτός των προσδιοριστικών μορφής, το string μορφής είναι αμετάβλητο της εξόδου.+Η μέθοδος //format// μορφοποιεί ένα string σε αναλογία με τη συνάρτηση [[http://www.cplusplus.com/reference/cstdio/printf/|printf]] στη γλώσσα C. Το ακόλουθο παράδειγμα //SquareRoot// μορφοποιεί δύο τιμές με μία μόνο κλήση της //format//:
  
-Τα //strings// μορφής υποστηρίζουν πολλές δυνατότητες. Εδώ, θα καλύψουμε μόνο κάποια βασικά. +<code java SquareRoot.java> 
- +public class SquareRoot {
-Το παράδειγμα //Root2// μορφοποιεί δύο τιμές με μία μόνο κλήση της //format//: +
- +
-<code java Root2.java> +
-public class Root2 {+
     public static void main(String[] args) {     public static void main(String[] args) {
         int i = 2;         int i = 2;
Line 57: Line 59:
 </code> </code>
  
-Αυτή είναι η έξοδος: +H έξοδος της κλάσης SquareRoot είναι: ''The square root of 2 is 1.414214.'' 
-<code java> + 
-The square root of 2 is 1.414214.+Όλοι οι προσδιοριστές μορφοποίησης αρχίζουν με τον χαρακτήρα '%' και ακολουθούν 1 ή 2 χαρακτήρες που καθορίζουν το είδος της μορφοποιημένης εξόδου που παράγεται. Παρακάτω δίνονται μερικές από τις πιο συνήθεις μετατροπές: 
 + 
 +  * το %d μορφοποιεί μια τιμή integer ως μια δεκαδική τιμή. 
 +  * το %f μορφοποιεί μια floating point τιμή ως μια δεκαδική τιμή. 
 +  * το %n εισάγει έναν platform-specific χαρακτήρα αλλαγής γραμμής. 
 +  * το %x μορφοποιεί έναν integer ως μια δεκαεξαδική τιμή.  
 +  * το %s μορφοποιεί ένα String. 
 + 
 +Οι σημαντικότεροι προσδιοριστές μορφοποίησης δίνονται παρακάτω: 
 +{{:java:format.png}} 
 + 
 +Ακολουθούν δύο παραδείγματα χρήσης των σημαντικότερων προσδιοριστών μορφοποίησης που παρουσιάστηκαν προηγούμενα. 
 + 
 +<code java MyFormat.java> 
 +public class MyFormat { 
 +    public static void main(String[] args) { 
 +        System.out.format("%f, %1$+020.10f %n", Math.PI); 
 +    } 
 +}
 </code> </code>
  
-Όπως και τα τρία που χρησιμοποιούνται σε αυτό το παράδειγμα, όλα τα προσδιοριστικά μορφής αρχίζουν με ένα % και τελειώνουν με μια μετατροπή 1- ή 2- χαρακτήρων που καθορίζει το είδος της μορφοποιημένης εξόδου που παράγεταιΟι τρεις μετατροπές που χρησιμοποιήθηκαν εδώ είναι:+<code java TestFormat.java> 
 +import java.util.Calendar; 
 +import java.util.Locale;
  
-  * το d μορφοποιεί μια τιμή integer ως μια δεκαδική τιμή+public class TestFormat { 
-  * το f μορφοποιεί μια floating point τιμή ως μια δεκαδική τιμή+     
-  * το εξάγει έναν platform-specific τερματιστή γραμμής .+    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>
  
-  * το x μορφοποιεί έναν integer ως μια δεκαεξαδική τιμή.  
-  * το s μορφοποιεί κάθε τιμή σε ένα string. 
-  * το tB μορφοποιεί έναν integer σε ένα locale-specific όνομα μήνα. 
  
-|Προηγούμενο: [[:java:character_streams Streams Χαρακτήρων]]| Επόμενο: [[:java:class_path Η κλάση Path ]] |+|Προηγούμενο: [[:java:util_scanner_class Η κλάση Scanner]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:object_serialization Object Serialization/Deserialization ]] |
  
  
java/formatting.txt · Last modified: 2021/05/14 15:09 (external edit)