gpt4 book ai didi

java - 没有 "if-else"或 "switch-case"的公制转换算法

转载 作者:搜寻专家 更新时间:2023-11-01 01:08:15 26 4
gpt4 key购买 nike

我想编写一个可以将一个单位转换为另一个单位的程序。假设我有两种方法。第一种方法可以进行公制转换,第二种方法可以进行重量转换。例如;

1. long km=metricConvLength(long mil,Enum.mil,Enum.km);//第一种方法

2. long agirlik=metricConvWeight(long kg,Enum.mil,Enum.km);//第二种方法

我想为这些变量使用Enum 结构。我的程序可以转换这些东西和对立面;

  • 海里公里
  • 海里-海里
  • 英尺-公里
  • 英尺-密尔
  • 磅-公斤
  • ons-gr
  • 公司 - 厘米
  • 码 - 米
  • 节公里

我的问题:我不想使用 if-elseswitch-case 结构进行转换。(因为如果我使用if-else 结构,我的代码看起来很糟糕,非常容易和缓慢。如果我使用这些结构,我需要超过 50 个 if-else 结构。这很麻烦。)

我能否在不使用 if-else 或 switch-case 的情况下为这些转换编写算法。我的目的是更少的代码,更多的工作。关于算法有什么技巧吗?

最佳答案

您不需要 if-then-else - 事实上,您的程序中不需要控制语句。您所需要的只是一个查找表 - 一个 Map,它将您的单位枚举转换为 double 转换因子,以便将单位度量乘以您获得米的转换因子空间单位和重量单位公斤。相反,将米除以该系数即可得到所需的单位。

有了这张 map ,您可以对所有单位对进行转换:

  • 查找源单位的转换系数Cs
  • 查找目标单位的转换系数 Cd
  • 返回 value * Cs/Cd 作为结果。

例如,假设您要处理米、码、英寸和英尺。您的 map 将如下所示:

  • 米 - 1.0
  • y - 0.9144
  • 在 - 0.0254
  • 英尺 - 0.3048

现在假设您要将 7.5 码转换为英尺:

  • 查找 Cs = 0.9144
  • 查找 Cd = 0.3048
  • 计算并返回 Res = 7.5 * 0.9144/0.3048 = 22.5

关于java - 没有 "if-else"或 "switch-case"的公制转换算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17548187/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com