用Java写一个计算单位转换的工具类
时间: 2023-12-12 07:02:25 浏览: 118
好的,以下是一个使用Java编写的计算单位转换的工具类,支持多种计量单位之间的转换:
```java
import java.util.HashMap;
import java.util.Map;
public class UnitConverter {
private Map<String, Map<String, Double>> conversionTable;
public UnitConverter() {
conversionTable = new HashMap<>();
// 长度单位转换表(以米为基准)
Map<String, Double> lengthMap = new HashMap<>();
lengthMap.put("mm", 0.001);
lengthMap.put("cm", 0.01);
lengthMap.put("m", 1.0);
lengthMap.put("km", 1000.0);
conversionTable.put("length", lengthMap);
// 重量单位转换表(以克为基准)
Map<String, Double> weightMap = new HashMap<>();
weightMap.put("mg", 0.001);
weightMap.put("g", 1.0);
weightMap.put("kg", 1000.0);
conversionTable.put("weight", weightMap);
}
public double convert(double value, String fromUnit, String toUnit, String category) {
if (fromUnit.equals(toUnit)) {
return value;
}
if (!conversionTable.containsKey(category) || !conversionTable.get(category).containsKey(fromUnit)
|| !conversionTable.get(category).containsKey(toUnit)) {
throw new IllegalArgumentException("无法完成 " + fromUnit + " 到 " + toUnit + " 的转换");
}
double conversionFactor = conversionTable.get(category).get(toUnit) / conversionTable.get(category).get(fromUnit);
double result = value * conversionFactor;
return result;
}
}
```
在上面的代码中,我们首先创建了一个 `UnitConverter` 类,并在构造函数中初始化了转换表 `conversionTable`,其中包含了长度和重量两个类别的计量单位之间的转换因子。然后,我们定义了一个 `convert` 方法,该方法接受需要转换的数值、原单位、目标单位和计量单位类别作为参数,并返回转换后的结果。
在 `convert` 方法中,我们首先检查 `fromUnit` 和 `toUnit` 是否相同。如果相同,直接返回原数值。如果不同,我们检查 `category` 是否在 `conversionTable` 中,并且 `fromUnit` 和 `toUnit` 是否在 `category` 对应的转换表中。如果没有找到转换因子,则抛出 `IllegalArgumentException` 异常。
最后,我们将原始值乘以转换因子,并返回计算结果。这个工具类可以方便地用于不同计量单位之间的转换,如长度、重量等。
阅读全文