我想编写一个程序,可以将一个单元转换为另一个单元。假设我有2种方法。第一种方法可以进行 公制转换 ,第二种方法可以进行 权重转换 。例如;
1。 long km=metricConvLength(long mil,Enum.mil,Enum.km);//first method
long km=metricConvLength(long mil,Enum.mil,Enum.km);//first method
2。 long agirlik=metricConvWeight(long kg,Enum.mil,Enum.km);//second method
long agirlik=metricConvWeight(long kg,Enum.mil,Enum.km);//second method
我想对这些变量使用 Enum 结构。我的程序可以转换这些东西和相反的东西。
我的问题: 我不想使用if-else或switch-casestructs进行转换。(因为如果使用if-else struct,我的代码看起来很糟糕,容易且缓慢。如果我需要的话,我需要50多个if-else struct使用这些结构。
if-else
switch-case
我可以在不使用if-else或switch-case的情况下为这些转换编写算法吗? 我的目的是减少代码,增加工作量。关于算法的任何提示吗?
您不需要if-then-else-实际上,您的程序中不需要控制语句。您所需要的只是一个查找表- 该表Map将您的单位枚举double转换为转换因子,以便将度量单位乘以转换因子,您将获得米的空间单位和千克的重量单位。相反,将米除以该系数可以得到所需的单位。
if-then-else
Map
double
有了此地图,您可以对所有成对的单位进行转换:
Cs
Cd
value * Cs / Cd
例如,假设您要处理米,码,英寸和英尺。您的地图如下所示:
现在假设您要将7.5码转换为英尺:
7.5
Cs = 0.9144
Cd = 0.3048
Res = 7.5 * 0.9144 / 0.3048 = 22.5