題目描述

Java的輸出串流物件所提供的「printf」方法,可以被用來將輸出的內容格式化。這個題目將會測試您對於格式化輸出的了解程度。



原題網址

輸入格式

每一行輸入中都含有一個字串,後面接著一個整數。每個字串的最大長度是10個字元,每個整數的範圍在0到999(包括0和999)之間。

輸出格式

每一行輸出都有兩個欄位:第一個欄位包含了輸入的字串和空格,字串加空格的長度為15個字元。第二個欄位包含輸入的整數,固定為三位數,不足三位數的話要在左邊補0。

範例輸入

java 100
cpp 65
python 50

範例輸出

================================
java 100
cpp 065
python 050
================================

額外解釋

每行輸出中的字串都是靠左對齊,若未滿15個字元會在右邊用空格來補足。每行的第16個字元開始為輸入的整數,整數固定都為三位數,未滿三位數字的整數要補零至左邊的位數。

解題概念

不熟悉格式化輸出的話,可能會覺得這題十分麻煩,還要計算空格的數量和整數的位數。實際上,在格式化字串的時候,可以順便指定資料格式的長度。如「%d」,表示整數資料;而「%5d」會預留至少5個字元的長度來給整數使用,若有不足的位數會在左邊填上空格;「%05d」同樣會預留至少5個字元的長度來給整數使用,但若有不足的位數則會在左邊填上「0」;「%-5d」也是會預留至少5個字元的長度來給整數使用,但若有不足的位數是在右邊填上空格。這套規則除了補0的部份外,也能用在「%s」的字串資料。

熟悉格式化輸出之後,就可以很直覺的反應出這題的輸出格式要如何完成了!

參考答案

import java.util.Scanner;

public class Solution {

    public static void main(final String[] args) {
        final Scanner sc = new Scanner(System.in);
        System.out.println("================================");
        for (int i = 0; i < 3; i++) {
            final String s1 = sc.next();
            final int x = sc.nextInt();
            System.out.printf("%-15s%03d%n", s1, x);
        }
        System.out.println("================================");
    }
}