java:formatting

This is an old revision of the document!


Μορφοποίηση Εξόδου

Σημείωση: Τα μόνα PrintStream αντικείμενα που είναι πιθανό να χρειαστείτε είναι τα System.out και System.err. Όταν χρειάζεται να δημιουργήσετε ένα διαμορφωμένο stream εξόδου, χρησιμοποιήστε PrintWriter, και όχι PrintStream.

Οι κλάσεις PrintStream και PrintWriter υλοποιούν ένα κοινό σύνολο μεθόδων για εγγραφή χαρακτήρων. Δύο βασικές δυνατότητες μορφοποίησης παρέχονται:

  1. Οι μέθοδοι print και println οι οποίες δέχονται μόνο ένα όρισμα είτε βασικού τύπου (int, long, double, byte etc), είτε αναφορικού τύπου (Object ή String)
  2. Η μέθοδος format μορφοποιεί με βάση ένα String μορφοποίησης ανάλογο με αυτό της printf στη γλώσσα C.

Οι print και println Μέθοδοι

Η κλήση των print ή println λαμβάνει ως όρισμα ένα String. Εάν υπάρχουν ορίσματα στις δύο αυτές μεθόδους που δεν είναι του τύπου String, τότε καλείται η μέθοδος toString(), προκειμένου να μετατραπούν τα ορίσματα σε String. Μπορείτε να δείτε το παρακάτω παράδειγμα:

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 + ".");
    }
}

Παρακάτω δίνεται το αποτέλεσμα της εκτέλεσης της κλάσης Root:

The square root of 2 is 1.4142135623730951.
The square root of 5 is 2.23606797749979.

Η Μέθοδος format

Η μέθοδος format μορφοποιεί πολλαπλά στοιχεία που βασίζονται σε ενα String μορφοποίησης. Το String μορφoποίησης είναι ένα String που περιέχει προσδιοριστές μορφοποίησης. Το παράδειγμα Root2 μορφοποιεί δύο τιμές με μία μόνο κλήση της format:

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);
    }
}

H έξοδος της κλάσης Root2 δίνεται παρακάτω

The square root of 2 is 1.414214.

Όλα οι προσδιοριστές μορφοποίησης αρχίζουν με τον χαρακτήρα '%' και ακολουθούν 1 ή 2 χαρακτήρες που καθορίζει το είδος της μορφοποιημένης εξόδου που παράγεται. Παρακάτω δίνονται μερικές από τις πιο συνήθεις μετατροπές:

  • το %d μορφοποιεί μια τιμή integer ως μια δεκαδική τιμή.
  • το %f μορφοποιεί μια floating point τιμή ως μια δεκαδική τιμή.
  • το %n εισάγει έναν platform-specific χαρακτήρα αλλαγής γραμμής.
  • το %x μορφοποιεί έναν integer ως μια δεκαεξαδική τιμή.
  • το %s μορφοποιεί ένα String.

Οι σημαντικότεροι προσδιοριστές μορφοποίησης δίνονται παρακάτω:

Παρακάτω δίνεται δύο παραδείγματα χρήσης των σημαντικότερων προσδιοριστών μορφοποίησης που παρουσιάστηκαν παραπάνω.

MyFormat.java
public class MyFormat {
    public static void main(String[] args) {
        System.out.format("%f, %1$+020.10f %n", Math.PI);
    }
}
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"
    }
}
java/formatting.1486454447.txt.gz · Last modified: 2017/02/07 08:00 (external edit)