Ostatnia wypowiedź na dzisiaj (dotycząca Javy oczywiście) sięgać będzie tematu formatowania danych w postaci łańcuchów znaków, czyli typu "String". Nie chodzi tylko o konwertowanie liczb na łańcuchy, ale także ich ładne prezentowanie. Na przykład wypisanie dużej liczby z odstępami, czy też wyświetlenie wyników danej kolumny z tabelki o tej samej szerokości pola, aby kolejne dane się "nie rozjeżdżały". Prezentowana tutaj metoda która nam to umożliwi to "String.format". Zapraszam już po raz ostatni w dniu Konstytucji 3 Maja!

"STRING.FORMAT". KRÓTKI OPIS I PRZYKŁADOWE DZIAŁANIE

Funkcja pozwala na uzyskanie kontroli nad formatowaniem danych tekstowych oraz na konwersję danych innego typu niż łańcuchy na "String". Aby umiejętnie się nią posługiwać, trzeba znać zasadę działania funkcji "printf" z języka C, która charakteryzuje się umieszczaniem tzw. "specyfikatorów formatu" tuż po znaku procentu. Stanowi to łańcuch sterujący. Następnie odpowiedni parametr aktualny umieszczony w metodzie zaraz po łańcuchu sterującym jest "podstawiany" i poddawany formatowaniu jaki sobie wstawimy. Tak w skrócie działa "String.format".

Java choć trochę "ściąga" z C, to ma też trochę oryginalnych zapisów jak na przykład możliwość wielokrotnego formatowania tego samego parametru co zostanie ukazane poniżej jak to zrobić. Ponadto, można zadecydować o kolejności wybierania parametrów w jakim miejscu mają się znaleźć (w C, można tylko od lewej do prawej).

Nie będę aktualnie podawał całego stosu modyfikatorów, tylko same konkrety, abyście mogli sobie poćwiczyć. "String.format" trzeba sobie wyćwiczyć sobie samemu, żeby zasady korzystania same weszły w krew. Uprzedzam, że trzeba uważać przy dobieraniu specyfikatorów, bo potem wyniki mogą być fałszywe albo funkcja może zgłosić wyjątek o nieprawidłowym doborze rodzaju formatowania. Metoda posiada zmienną liczbę parametrów, więcej tutaj o tym zagadnieniu.

PRZYKŁADOWY KOD ŹRÓDŁOWY

Jak zwykle dorzucam przykładowy program z wykorzystaniem funkcji "String.format":

  • KLASA "Main"
public class Main
{
	public static void main(String[] args)
	{
		new StringFormat();
	}
}
  • KLASA "StringFormat"
public class StringFormat
{
	public StringFormat()
	{
		PrintStream ps = System.out;
		int i = 56;
		float f = 738.467598f;
		String sa = String.format("[%, d]", 10000);
		String sb = String.format("[%.1f]", 350.0f);
		String sc = String.format("[%d] [%<5d] [%<-5d] [%<15d]", i);
		String sd = String.format("[%2$d] [%f] [%<2.2f] [%<2.5f]", f, i);

		ps.println(sa);
		ps.println(sb);
		ps.println(sc);
		ps.println(sd);
	}
}

Potrzebny jest jeszcze import w postaci ciągu słów "java. io. PrintStream" odseparowanych od siebie kropkami bez spacji (tak, znowu zasrana Joomla). Umieściłem dodatkowo instancję klasy "PrintStream", aby w nawiązaniu do jednego z poprzednich artykułów pokazać jak można sobie skrócić wielokrotne wywoływanie tej samej funkcji "println". Przykładowe użycia metody "String.format" ukazują kolejno:

  • liczbę całkowitą stawiając spacje poprzez specyfikator przecinkowy (pokaże liczbę w postaci 10 000)
  • liczbę zmiennoprzecinkową z zaokrągleniem do jednego miejsca po przecinku
  • czterokrotne formatowanie tej samej liczby całkowitej za pomocą operatora "<" (lewy nawias trójkątny) oznaczającego odnoszenie się do tego samego parametru (drugie formatowanie przypisuje szerokość pola równą 5, trzecie robi tak samo wypisując wynik od lewej strony, a ostatni przypisuje szerokość pola równą 15 znaków)
  • czterokrotne formatowanie przy użyciu liczby zmiennoprzecinkowej i całkowitej zmieniając kolejność podstawiania przy użyciu kombinacji "[numer argumentu]$" (znak dolara obok numeru)

Istnieje jeszcze wiele kombinacji "String.format" jednak nie widzę sensu, aby prezentować Wam je wszystkie bo artykuł wyszedłby trzy razy dłuższy.


W ten sposób czwarty i ostatni raz w dniu dzisiejszym się z Wami żegnam!

PODOBNE ARTYKUŁY