עיצוב עם printf () ב- Java

1. הקדמה

במדריך זה נדגים דוגמאות שונות לעיצוב עם ה- printf ()שיטה.

השיטה היא חלק מה- java.io.PrintStream בכיתה ומספק עיצוב מחרוזות בדומה ל- printf () פונקציה ב- C.

2. תחביר

אנו יכולים להשתמש באחת מהפעולות הבאות PrintStream שיטות לעיצוב הפלט:

System.out.printf (פורמט, טיעונים); System.out.printf (אזור, פורמט, ויכוחים);

אנו מציינים את כללי העיצוב באמצעות ה- פוּרמָט פָּרָמֶטֶר. הכללים מתחילים עם ‘%' אופי.

בואו נסתכל על דוגמה מהירה לפני שנצלול לפרטי כללי העיצוב השונים:

System.out.printf ("שלום% s!% N", "עולם");

זה מייצר את התפוקה הבאה:

שלום עולם!

כפי שמוצג לעיל, מחרוזת הפורמט מכילה טקסט רגיל ושני כללי עיצוב. הכלל הראשון משמש לעיצוב ארגומנט המחרוזת. הכלל השני מוסיף תו קו חדש לסוף המחרוזת.

2.1. עיצוב כללים

בואו נסתכל מקרוב על מחרוזת הפורמט. זה מורכב מילוליות ומפרט פורמט. מפרט הפורמט כולל דגלים, רוחב, דיוק ותווי המרה ברצף הבא:

% [דגלים] [רוחב] [. דיוק] תו המרה

מפרט בסוגריים אופציונלי.

כְּלַפֵּי פְּנִים, printf () משתמש בכיתה java.util.Formatter כדי לנתח את מחרוזת הפורמט וליצור את הפלט. אפשרויות מחרוזת פורמט נוספות ניתן למצוא ב- Formatter Javadoc.

2.2. דמויות המרה

ה אופי המרה נדרש וקובע כיצד מעצב הטיעון. תווי המרה תקפים רק עבור סוגי נתונים מסוימים. כמה נפוצים הם:

  • ס - פורמט מחרוזות
  • ד - מעצב מספרים שלמים עשרוניים
  • f - מעצב את מספרי הנקודות הצפות
  • t- מעצב ערכי תאריך / שעה

נחקור את אלה ועוד כמה אחרים בהמשך המאמר.

2.3. משתנים אופציונליים

ה [דגלים] להגדיר דרכים סטנדרטיות לשינוי הפלט והם הנפוצים ביותר לעיצוב מספרים שלמים ומספרי נקודה צפה.

[רוחב] מציין את רוחב השדה להוצאת הארגומנט. זה מייצג את המספר המינימלי של תווים שנכתבו לפלט.

[.Precision] מציין את מספר הספרות המדויקות בעת הפקת ערכי נקודה צפה. בנוסף, אנו יכולים להשתמש בו כדי להגדיר את אורך המצע לחילוץ מ- a חוּט.

3. מפריד קו

כדי לפרק את המחרוזת לשורות נפרדות, יש לנו%נ מפרט:

System.out.printf ("baeldung% nline% nterminator");

קטע הקוד לעיל יפיק את הפלט הבא:

מסוף קו באלדונג

ה % n מפריד printf () יכניס באופן אוטומטי את מפריד השורות המקורי של המערכת המארחת.

4. עיצוב בוליאני

כדי לעצב ערכים בוליאניים, אנו משתמשים ב- % ב פוּרמָט. זה עובד בצורה הבאה: אם ערך הקלט הוא נָכוֹן, התפוקה היא נָכוֹן. אחרת, הפלט הוא שֶׁקֶר.

אז אם כן:

System.out.printf ("% b% n", null); System.out.printf ("% B% n", שקר); System.out.printf ("% B% n", 5.3); System.out.printf ("% b% n", "טקסט אקראי");

ואז נראה:

נכון שקר נכון נכון 

שימו לב שנוכל להשתמש % B לעיצוב אותיות רישיות.

5. עיצוב מחרוזות

כדי לעצב מחרוזת פשוטה, נשתמש ב- % s קוֹמבִּינַצִיָה. בנוסף, אנו יכולים לעשות את המחרוזת באותיות רישיות:

printf ("'% s'% n", "baeldung"); printf ("'% S'% n", "baeldung");

והתפוקה היא:

'באלדונג' 'BAELDUNG'

כמו כן, כדי לציין אורך מינימלי, אנו יכולים לציין a רוֹחַב:

printf ("'% 15s'% n", "baeldung");

מה שנותן לנו:

'באלדונג'

אם נצטרך להצדיק שמאל את המחרוזת שלנו, נוכל להשתמש בסמל '- 'דגל:

printf ("'% - 10s'% n", "baeldung");

והתפוקה היא:

'באלדונג'

יתרה מכך, אנו יכולים להגביל את מספר התווים בפלט שלנו על ידי ציון a דיוק:

System.out.printf ("% 2.2s", "שלום!");

הראשון 'איקס' מספר ב % x.ys התחביר הוא הריפוד. 'Y' הוא מספר התווים.

לדוגמא שלנו כאן, הפלט הוא היי.

6. עיצוב צ'אר

התוצאה של % ג הוא דמות Unicode:

System.out.printf ("% c% n", 's'); System.out.printf ("% C% n", 's');

אות ההון ג יגדיר את התוצאה באותיות רישיות:

s ש

אבל אם אנו נותנים לו טיעון לא חוקי, אז מעצב יזרוק IllegalFormatConversionException.

7. עיצוב מספרים

7.1. עיצוב שלם שלם

ה printf () השיטה מקבלת את כל המספרים השלמים הזמינים בשפה; בת, קצר, אינט, ארוך ו ביג-שלם אם אנו משתמשים % d:

System.out.printf ("מספר שלם פשוט:% d% n", 10000L);

בעזרת ה- 'ד' אופי, יהיה לנו:

מספר שלם פשוט: 10000

למקרה שאנחנו צריכים כדי לעצב את המספר שלנו באמצעות מפריד האלפים, אנו יכולים להשתמש ב- ‘,'דֶגֶל. ונוכל גם לעצב את התוצאות שלנו למקומות שונים:

System.out.printf (Locale.US, "%, d% n", 10000); System.out.printf (Locale.ITALY, "%, d% n", 10000);

כפי שאנו רואים, העיצוב בארה"ב שונה מאשר באיטליה:

10,000 10.000

7.2. עיצוב צף וכפול

כדי לעצב מספר צף, נצטרך את הפורמט 'f':

System.out.printf ("% f% n", 5.1473);

מה יפיק:

5.147300

כמובן, הדבר הראשון שעולה בראש הוא לשלוט ב דיוק:

System.out.printf ("'% 5.2f'% n", 5.1473);

כאן אנו מגדירים את רוֹחַב של המספר שלנו כ 5, ואורך החלק העשרוני הוא 2:

' 5.15'

כאן יש לנו ריפוד רווח אחד מתחילת המספר כדי לתמוך ברוחב שהוגדר מראש.

לקבל את התפוקה שלנו בסימון מדעי, אנו פשוט משתמשים ב- דמות המרה 'ה':

System.out.printf ("'% 5.2e'% n", 5.1473);

והתוצאה היא הבאה:

'5.15e + 00'

8. עיצוב תאריך ושעה

לעיצוב תאריך ושעה, מחרוזת ההמרה היא רצף של שתי תווים: 'T' אוֹ 'T' אופי וסיומת ההמרה. בואו נחקור את תווי הסיומת הנפוצים ביותר לעיצוב זמן ותאריך עם הדוגמאות.

בהחלט, לעיצוב מתקדם יותר נוכל להשתמש בו DateTimeFormatter שהיה זמין מאז Java 8.

8.1. עיצוב זמן

ראשית, בואו נראה את הרשימה של כמה תווי סיומת שימושיים לעיצוב זמן:

  • 'H', 'M', 'S' - הדמויות אחראיות על מיצוי השעות, הדקות והשנייה מהקלט תַאֲרִיך
  • 'L', 'N' - לייצג את הזמן באלפיות השנייה וננו שניות בהתאם
  • 'P' - מוסיף עיצוב am / pm
  • 'Z' - מדפיס את קיזוז אזור הזמן

עכשיו, נניח שרצינו להדפיס את חלק הזמן של א תַאֲרִיך:

תאריך תאריך = תאריך חדש (); System.out.printf ("% tT% n", תאריך);

הקוד לעיל יחד עם '% TT' שילוב מייצר את הפלט הבא:

13:51:15

אם אנו זקוקים לעיצוב מפורט יותר, אנו יכולים לקרוא למקטעי זמן שונים:

System.out.printf ("שעות% tH: דקות% tM: שניות% tS% n", תאריך, תאריך, תאריך);

לאחר שהשתמשתי 'H', 'M', ו 'ש' אנחנו מקבלים:

שעות 13: דקות 51: שניות 15

אם כי, רישום תַאֲרִיך פעמים רבות זה כאב. לחלופין, כדי להיפטר ממספר ארגומנטים, נוכל להשתמש בהפניה לאינדקס של פרמטר הקלט שלנו שהוא 1$ במקרה שלנו:

System.out.printf ("% 1 $ tH:% 1 $ tM:% 1 $ tS% 1 $ tp% 1 $ tL% 1 $ tN% 1 $ tz% n", תאריך);

כאן אנו רוצים כמוצא את הזמן הנוכחי, am / pm, זמן באלפיות השנייה, ננו-שניות וקיזוז אזור הזמן:

13:51:15 אחר הצהריים 061 061000000 +0400

8.2. עיצוב תאריך

כמו עיצוב זמן, יש לנו תווי עיצוב מיוחדים לעיצוב תאריכים:

  • 'א' - מדפיס את היום המלא של השבוע
  • 'ד' - מעצב יום דו ספרתי בחודש
  • 'ב' - מיועד לשם החודש המלא
  • 'M' - מעצב חודש דו ספרתי
  • 'Y' - תפוקות בשנה בארבע ספרות
  • 'Y' - מוציא את שתי הספרות האחרונות של השנה

אז אם היינו רוצים להציג את יום השבוע, ואחריו את החודש:

System.out.printf ("% 1 $ tA,% 1 $ tB% 1 $ tY% n", תאריך);

ואז באמצעות 'א', 'ב', ו 'Y', היינו מקבלים:

יום חמישי, נובמבר 2018

כדי שהתוצאות שלנו יהיו בפורמט מספרי, אנו יכולים להחליף את 'A ',' B ',' Y 'אותיות עם'd ',' m ',' y ':

System.out.printf ("% 1 $ td.% 1 $ tm.% 1 $ ty% n", תאריך);

מה שיביא:

22.11.18

9. סיכום

במאמר זה דנו כיצד להשתמש ב- PrintStream # printf שיטה לעיצוב הפלט. בדקנו את תבניות הפורמט השונות המשמשות לשליטה בפלט עבור סוגי נתונים נפוצים.

לבסוף, כמו תמיד, ניתן למצוא את הקוד ששימש במהלך הדיון ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found