題目描述
Java的輸出串流物件所提供的「printf」方法,可以被用來將輸出的內容格式化。這個題目將會測試您對於格式化輸出的了解程度。
原題網址
輸入格式
每一行輸入中都含有一個字串,後面接著一個整數。每個字串的最大長度是10個字元,每個整數的範圍在0到999(包括0和999)之間。
輸出格式
每一行輸出都有兩個欄位:第一個欄位包含了輸入的字串和空格,字串加空格的長度為15個字元。第二個欄位包含輸入的整數,固定為三位數,不足三位數的話要在左邊補0。
範例輸入
java 100
cpp 65
python 50
cpp 65
python 50
範例輸出
================================
java 100
cpp 065
python 050
================================
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("================================");
}
}