[英]Using spaces between specifiers
我最近開始學習JAVA。 我目前正在做一些有關stdout和格式化的日常練習。
行使:
輸出的每一行必須有2列第一列:左對齊為15個字符的字符串第二列:以三位數字表示的整數
我終於想出了辦法,並提出了:
System.out.format("%-15s %03d %n",s1 , x );
但是當我運行程序時出現錯誤。
后來當我刪除說明符之間的空格時
System.out.format("%-15s%03d%n",s1 , x );
該代碼似乎有效。
只是想知道不添加空間時會有什么不同。
格式字符串中添加的空格將是原義空格。 這意味着您將從提供的字符串的開頭得到15個空格, 再加上一個空格,因此總間距為16。這同樣適用於添加到輸出的數值。 %03d之后的空格將在數值后添加一個額外的空格。 知道這一點,您可以將其應用於示例:
String s1 = "My Name";
int x = 61;
System.out.format("%-15s %03d %n", s1, x ); // Spaces in format.
System.out.format("%-15s%03d%n", s1, x ); // No Spaces in format.
輸出將是:
My Name 061
My Name 061
鑒於:
My Name 061
^^^^^^^^^^^^^^^^^^^^
| 16 ||4 |
My Name 061
^^^^^^^^^^^^^^^^^^
| 15 ||3|
這種格式(無論哪種方式) 都不會產生錯誤。 如果為format()方法提供的任何一個或兩個變量具有錯誤的數據類型,則將產生錯誤。 變量s1是否聲明為字符串,變量x是否聲明為十進制整數( int )? 如果沒有,那么您最終可能會遇到IllegalFormatConversionException 。 請參閱此處以獲取與format()方法一起使用的正確轉換器標記。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.