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 formatowanie danych w języku Java. Zapraszam już po raz ostatni w dniu Konstytucji 3 Maja!

FORMATOWANIE DANYCH W JĘZYKU JAVA. KRÓTKI OPIS I PRZYKŁADOWE DZIAŁANIE

Funkcja pozwala na uzyskanie kontroli nad formatowaniem danych tekstowych oraz na konwersję danych innego typu 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ć. Formatowanie danych w języku Java trzeba 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 metoda może zgłosić wyjątek o nieprawidłowym doborze rodzaju formatowania. Metoda posiada zmienną liczbę parametrów.

PRZYKŁAD KODU ŹRÓDŁOWEGO

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 "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 (trzy dla "float" i jeden dla "int") zmieniając kolejność podstawiania przy użyciu kombinacji "[numer argumentu]$" (znak dolara obok numeru)

Formatowanie danych w języku Java można przeprowadzić na wiele kombinacji 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