Използване на printf за форматиране в Java

Osy mysaldarga karap lab.zhұmysty oryndanңyzdar.

тест на публичен клас

* Negіzgі әdіsі bastalatyn

* oryndau kez-kelgen Java-baғdarlama.

public static void main(String args[])

System.out.println("Здравей, свят!");

Използване на printf за форматиране в Java

Методътprintf() принадлежи към класаPrintStream, който отговаря за извеждането на информация. Вече познатите ни методиprint() иprintln() също са методи от класаPrintStream.

Методътprintf е дефиниран както следва:

printf (формат на низ, Object.args)

Първият аргумент наformat е низ, който указва шаблона, който ще бъде форматиран. Има определени правила за записването му.

В предишния пример форматът беше"%4d", къдетоd означава извеждане на десетично цяло число, а4 означава, че ако броят на знаците в числото е по-малък от 4, то ще бъде подплатено с интервали отпред с липсващия (до 4) брой знаци (по този начин се премества вдясно).

За по-голяма яснота даваме друг пример, който показва няколко числа в колона.

System.out.printf("%6d%n%6d%n%6d%n%6d%n%6d%n%6d", 666666, 55555, 4444, 333, 22, 1);

Следното ще бъде изведено на конзолата:

Тук във форматния низ сме използвали%6d%n, няколко пъти, където всеки%6d задава формата за едно от числата, дадени като аргументи по-долу. Първият%6d форматира числото666666, вторият%6d форматира55555 и т.н.%n означава нов ред. Тъй като форматирането%6d беше приложено към всички числа, числата, които съдържат по-малко от 6 знака, се преместват надясно слипсващия брой знаци и по този начин красиво подравнени.

Общата форма на инструкцията за форматиране е следната:

  • % е специален знак, който маркира началото на инструкциите за форматиране.
  • [флагове] са специални символи за форматиране. Например, флагът "+" означава, че числовата стойност трябва да включва знака +, флагът "-" означава ляво подравняване на резултата, флагът "," задава разделителя на хилядите за цели числа. Не е задължителна част от инструкциите.
  • [width] е положително цяло десетично число, което определя минималния брой знаци за отпечатване. Не е задължителна част от инструкциите.
  • [.precision] е неотрицателно десетично цяло число с точка пред него. Обикновено се използва за ограничаване на броя знаци. Конкретното поведение зависи от вида на трансформацията. Не е задължителна част от инструкциите.
  • conversion е знак, указващ как трябва да бъде форматиран аргументът. Напримерd за цели числа,s за низове,f за плаващи числа. Той е задължителна част от инструкциите.

Всички възможни флагове и преобразувания (преобразуване ) са изброени в официалната документация. Тук нямаме за цел да научим всички, нашата цел е да научим как да прилагаме форматиране. Така че нека да разгледаме няколко примера.

Пример 2. Нека разгледаме пример, демонстриращ изход към конзолатапреди да се запознаем с форматирането ислед.

Без форматиране

System.out.println("Коренът на числото " + i + " е " + корен);

Следното ще бъде изведено на конзолата:

Коренът от 675 е 25.98076211353316

В този случай преобразуването на код в низ се генерира автоматично от Java компилатора. НасамЛошото е, че с голям брой променливи и текст за изход е лесно да се загуби контрол върху резултатите.

Форматиран

System.out.printf("Коренът на %d е %f", i, корен);

Където%d отговаря за показване на стойността на променливатаi, а%f отговаря за показване на стойността на променливатаroot. В този случай вече не използваме конкатенация.

Следното ще бъде изведено на конзолата:

Коренът от 675 е 25,980762

Както виждаме, форматът автоматично закръгля числото до 6 знака след десетичната запетая. Въпреки това, когато форматираме, можем да зададем толкова десетични знаци, колкото са ни необходими, например:

System.out.printf("Коренът на %d е %.2f", i, корен);

Ще изведе число с два знака след десетичната запетая.

Нека да разгледаме най-популярните правила за форматиране, използвайки примери.