Jason. Cała informatyka w jednym miejscu!

Ostatni artykuł na dzisiaj (dotyczący 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". Prezentowany tutaj temat który 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

Głównym bohaterem dzisiejszego tematu jest metoda "String.format". 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 tak zwany "ł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 więc nie bądźcie zdziwieni faktem, że możecie wrzucać tyle parametrów ile chcecie i nie będzie błędów kompilacji.

PRZYKŁAD KODU ŹRÓDŁOWEGO

Jak zwykle dorzucam przykładowy program, razem z wykorzystaniem metody "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);
	}
}

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". Wtedy potrzebny będzie import w postaci "java. io.PrintStream" odseparowanych od siebie kropkami bez spacji (tak, znowu "Joomla!") 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 ostatnie 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), dlatego "int" będzie wypisane jako pierwsze

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