1

javax.measure を使用して、ユーザー入力を秒から日まで変化する秒に変換していますが、任意の単位から別の単位への変換は機能しません。これが私が設定したものです。

String units = "d";
double value = 30.0;
BaseUnit<Duration> unitType = new BaseUnit<Duration>(units);
UnitConverter toSeconds = unitType.getConverterTo(NonSI.DAY);
double s = toSeconds.convert(Measure.valueOf(value, unitType).doubleValue(unitType));

しかし、私はこのエラーが発生します

Exception in thread "main" javax.measure.converter.ConversionException: d is not compatible with s
at javax.measure.unit.Unit.searchConverterTo(Unit.java:259)
at javax.measure.unit.Unit.getConverterTo(Unit.java:248)
at FAMain.main(FAMain.java:18

このエラーは、NonSI to NonSI に関係なく、どの組み合わせでも発生します。Length はどのようにでも変換できますが、何らかの理由で Unit が機能しません。

4

1 に答える 1

2

あなたが単に作成することができずnew BaseUnit<Duration>("d");、それがどういうわけかNonSI.DAYになると仮定できない主な問題。

おそらくここが出発点です:

public static double toSeconds(final String unit, final double value) {
    switch (unit.toLowerCase()) {
    case "d":
    case "day":
        return NonSI.DAY.getConverterTo(SI.SECOND).convert(value);
    case "m":
    case "minute":
        return NonSI.MINUTE.getConverterTo(SI.SECOND).convert(value);
    case "s":
    case "second":
        return value;
    default:
        throw new IllegalArgumentException(unit);
    }
}
于 2016-01-12T22:45:22.190 に答える