我使用jscience为我解析一些单位:
Unit<?> meter = Unit.valueOf("m");
System.out.println(meter);
Unit<?> foot = Unit.valueOf("ft");
System.out.println(foot);
打印出来:
m
ft
我希望打印出来
metre
foot
或类似的东西。实际上,我实际上是在阅读这些单元字符串中,我无法控制用户输入的内容,所以我希望有些人输入&#34; m&#34;有些输入&#34;#34;米&#34 ;.在显示它时,我希望始终将其显示为&#34; Meter&#34;。
[限制]
该程序是一个存储许多不同类型数量的大型数据存储程序。用户可以存储任何数量的任何维度(只要它在UCUM中定义)。
答案 0 :(得分:4)
您可以使用UnitFormat
类来指定如何打印这些类。使用label
方法指定名称,使用alias
方法来帮助解析。
import java.io.IOException;
import javax.measure.unit.Unit;
import javax.measure.unit.UnitFormat;
public class ScienceUnit {
public static void main(String[] args) throws IOException {
Unit<?> meter = Unit.valueOf("m");
StringBuilder sb = new StringBuilder();
UnitFormat instance = UnitFormat.getInstance();
instance.label(meter, "Metre");
instance.format(meter, sb);
System.out.println(sb.toString());
}
}
输出:
Metre
请注意,如果从此程序中删除instance.label
行,则输出为:
m
默认值是您在原始帖子中描述的简短形式。我假设默认值是short form values described by UCUM,但我实际上没有检查过。