給定數值與單位(kg 千克、lb 磅、l 升、g 加侖),按固定換算率雙向轉換並保留 4 位小數。換算對照表:
1 kg = 2.2046 lb1 l = 0.2642 g1 lb = 0.4536 kg1 g = 3.7854 l建立兩個陣列分別存放原單位與目標單位,以及對應的乘法因子。讀入數據後,線性查找單位索引,乘以因子即得結果。複雜度 O(1) 每查詢。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] from = {"kg", "l", "lb", "g"};
String[] to = {"lb", "g", "kg", "l"};
double[] factor = {2.2046, 0.2642, 0.4536, 3.7854};
int T = sc.nextInt();
for (int cs = 1; cs <= T; ++cs) {
double val = sc.nextDouble();
String unit = sc.next();
int idx = -1;
for (int i = 0; i < 4; ++i)
if (from[i].equals(unit)) { idx = i; break; }
double ans = val * factor[idx];
System.out.printf("%d %.4f %s\n", cs, ans, to[idx]);
}
}
}
double 足夠精度;printf("%.4f") 自動四捨五入。0 l 等邊界情況,正常處理即可。