<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### [格式化修飾符](https://lingcoder.gitee.io/onjava8/#/book/18-Strings?id=%e6%a0%bc%e5%bc%8f%e5%8c%96%e4%bf%ae%e9%a5%b0%e7%ac%a6) 在插入數據時,如果想要優化空格與對齊,你需要更精細復雜的格式修飾符。以下是其通用語法: ~~~ %[argument_index$][flags][width][.precision]conversion ~~~ 最常見的應用是控制一個字段的最小長度,這可以通過指定*width*來實現。`Formatter` 對象通過在必要時添加空格,來確保一個字段至少達到設定長度。默認情況下,數據是右對齊的,不過可以通過使用`-`標志來改變對齊方向。 與*width*相對的是*precision*,用于指定最大長度。*width*可以應用于各種類型的數據轉換,并且其行為方式都一樣。*precision*則不然,當應用于不同類型的數據轉換時,*precision*的意義也不同。在將*precision*應用于`String`時,它表示打印`string`時輸出字符的最大數量。而在將*precision*應用于浮點數時,它表示小數部分要顯示出來的位數(默認是 6 位小數),如果小數位數過多則舍入,太少則在尾部補零。由于整數沒有小數部分,所以*precision*無法應用于整數,如果你對整數應用*precision*,則會觸發異常。 下面的程序應用格式修飾符來打印一個購物收據。這是*Builder*設計模式的一個簡單實現,即先創建一個初始對象,然后逐漸添加新東西,最后調用`build()`方法完成構建: ~~~ // strings/ReceiptBuilder.java import java.util.*; public class ReceiptBuilder { private double total = 0; private Formatter f = new Formatter(new StringBuilder()); public ReceiptBuilder() { f.format( "%-15s %5s %10s%n", "Item", "Qty", "Price"); f.format( "%-15s %5s %10s%n", "----", "---", "-----"); } public void add(String name, int qty, double price) { f.format("%-15.15s %5d %10.2f%n", name, qty, price); total += price * qty; } public String build() { f.format("%-15s %5s %10.2f%n", "Tax", "", total * 0.06); f.format("%-15s %5s %10s%n", "", "", "-----"); f.format("%-15s %5s %10.2f%n", "Total", "", total * 1.06); return f.toString(); } public static void main(String[] args) { ReceiptBuilder receiptBuilder = new ReceiptBuilder(); receiptBuilder.add("Jack's Magic Beans", 4, 4.25); receiptBuilder.add("Princess Peas", 3, 5.1); receiptBuilder.add( "Three Bears Porridge", 1, 14.29); System.out.println(receiptBuilder.build()); } } /* Output: Item Qty Price ---- --- ----- Jack's Magic Be 4 4.25 Princess Peas 3 5.10 Three Bears Por 1 14.29 Tax 2.80 ----- Total 49.39 */ ~~~ 通過傳入一個`StringBuilder`對象到`Formatter`的構造器,我們指定了一個容器來構建目標`String`。你也可以通過不同的構造器參數,把結果輸出到標準輸出,甚至是一個文件里。 正如你所見,通過相當簡潔的語法,`Formatter` 提供了對空格與對齊的強大控制能力。在該程序中,為了恰當地控制間隔,格式化字符串被重復利用了多遍。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看