czwartek, 27 września 2018

Java formatowanie tekstu


Formatowanie tekstu

Wyjście zmiennych tekstowych można formatować za pomocą polecenia printf. Polecenie printf rozumie serię znaków znanych jako specyfikacji formatu. Następnie pobiera ciąg tekstu i formatuje go, w oparciu o specyfikację format. As an example, supposed we wanted the Output window to display text in neat columns, like this: Jako przykład zobaczmy w oknie wynikowym wyświetlony tekst w kolumnach, jak poniżej:

Nazwa_egzamniu   Klasa_egzaminu
-----------------------------------
VB Net                  A
Java                     B
PHP                      C
-----------------------------------

Pierwsza kolumna jest wyrównana do lewej, a druga kolumna jest wyrównana do prawej. Kod dla zmiennych Nazwa_egzaminu i Klasa_egzaminu przedstawia się następująco:

String naglowek1 = "Nazwa_egzaminu";
String naglowek2 = "Klasa_egzaminu";
System.out.printf( "%-15s %15s %n", naglowek1, naglowek2);

Aby uzyskać kolumnę wyrównaną do lewej, trzeba użyć symbol procentu, znak minus , liczbę znaków, a następnie literę "s" (mała litera). Tak więc „%-15s”' oznacza piętnaście znaków wyrównanych do lewej.
Aby uzyskać wyrównanie do prawej należy uzyć takiej samej sekwencji znaków jak wyżej tylko bez znaku minus.
Aby uzyskać nową linią należy użyć znaków %n. Należy pamiętać, że znaki są otoczone cudzysłówiem.
Po przecinku wpisz tekst, który chcesz, formatować.Pierwszy przecinek w powyższym kodzie oddziela specyfikację formatowania od tekstu formatowanego.
Oto kilka tabel z różnymi opcjami.

Formatowanie zmiennych typu String

„%s”
Formatowanie ciągu składającego się z dowolnej ilości znaków
„%15s”
Formatowanie ciągu składającego się z określonej liczby znaków z wyrównaniem do prawej.
„%-15s”
Formatowanie ciągu składającego się z określonej liczby znaków z wyrównaniem do lewej.

Jeśli chcesz sformatować liczby, można użyć znaku "d" lub, w przypadku liczb zmiennoprzecinkowych, znaku "f"

Formatowanie zmiennych typu Integer


„%d”
Formatowanie ciągu składającego się z dowolnej ilość cyfr
„%4d”
Formatowanie ciągu składającego się z określonej ilość cyfr z wyrównaniem do lewej.
„%04d”
Formatowanie ciągu składającego się z określonej ilość cyfr z wypełniem zerami do lewej jeśli liczba jest krótsza niż określona ilość cyfr.

Formatowanie zmiennej typu Floating

„%f”
Formatowanie ciągu składającego się z dowolnej ilości cyfr. Zawsze daje sześciu miejsc po przecinku.
„%.2f”
Formatowanie ciągu składającego się z dowolnej ilości cyfr. Ustawia dwa miejsca po przecinku.
„%10.2f”
Formatuje do 2 miejsc po przecinku, ale cały ciąg zajmuje 10 znaków. Jeśli nie wystarczającej liczby cyfr puste miejsca są wypełnieniami spacjami.

Oto kilka przykładów kodu dla zmiennych typu: string, integer i floating. Wypróbuj kod:

Tekst "Wynik:" zostanie sformatowany jako ciąg znaków (% s), a liczba12345 będzie sformatowana jako liczba (% d).

public class Formatowanie {
 
        
        public static void main(String[] args) {
                 
                 System.out.printf("%s %d %n", "Wynik: ", 12345);
 
        }
 
}
Wynik:
-----------------------------------------
 
Wynik:  12345


public class Formatowanie {       
        public static void main(String[] args) {
                 
                 System.out.printf("%s %10d %n", "Wynik: ", 12345);
        }
}
Wynik:
-----------------------------------------
 
Wynik:       12345

Tak samo jak wyżej, ale liczba zajmuje 10 miejsc, ze spacjami po lewej stronie, jako wypełnianie.

Dwa zestawy liczb. Pierwszy z nich jest wyrównany do lewej, a drugi do prawej strony.

public class Formatowanie {
 
        
        public static void main(String[] args) {
                 
                 System.out.printf("%-10d %10d %n", 54321, 12345);
 
        }
}
Wynik:
-----------------------------------------
54321           12345


Mamy dwa zestawy liczb.Pierwszy z nich jest poprzedzony wiodącymi zerami. Drugi jest wyrównany do prawej, ale spacje są wykorzystywane jako dopełnienie do lewej zamiast zer.

public class Formatowanie {
 
        
        public static void main(String[] args) {
                 
                 System.out.printf("%010d %10d %n", 54321, 12345);
 
        }
}
 
Wynik:
-----------------------------------------
0000054321      12345

Sformatowanie liczby zmiennoprzecinkowej i dodanie znaku nowej linii. Liczba zmiennoprzecinkowa będzie miała sześciu miejsc po przecinku.

public class Formatowanie {
 
        
        public static void main(String[] args) {
                 
                 System.out.printf("%f %n", 123.45);
 
        }
 
}
Wynik:
-----------------------------------------
123,450000

Tak samo jak wyżej, ale będzie formatować do dwóch miejsc po przecinku

public class Formatowanie {
 
        
        public static void main(String[] args) {
                 
                 System.out.printf("%.2f %n", 123.45);
 
        }
}
Wynik:
-----------------------------------------
123,45

A oto kod na wyżej sformatowane wyjścia:

public class FormatowanieTekstu {
 
        
        public static void main(String[] args) {
                 
                 String naglowek1 = "Nazwa_egzamniu";
                 String naglowek2 = "Klasa_egzaminu";
                 String linia = "-----------------------------------";
                 
                 String kurs1 = "VB Net"; String klasa1 = "A";
                 String kurs2 = "Java"; String klasa2 = "B";
                 String kurs3 = "PHP"; String klasa3 = "C";
                 
                 System.out.println("");
                 System.out.printf("%-15s %15s %n", naglowek1, naglowek2);
                 System.out.println(linia);
                 
                 System.out.printf("%-15s %10s %n", kurs1, klasa1);
                 System.out.printf("%-15s %10s %n", kurs2, klasa2);
                 System.out.printf("%-15s %10s %n", kurs3, klasa3);
                 
                 System.out.println(linia);
                 System.out.println("");
 
        }
}

Powyższe przykłady mają pokazać sposoby formatowania. Jeśli otrzymasz komunikat o błędzie może formatowanie „s” zostało pomylone z formatowaniem "d"!



Brak komentarzy:

Prześlij komentarz