【发布时间】:2021-03-27 06:08:50
【问题描述】:
我需要在 Java 或 SQL 中实现以下逻辑。
信用评级从数字 1 到 11。 并且对应于每个等级说 x,我有 3 个等级,有效地:x+、x 和 x-。 每个等级之间的差异称为一个步骤。例如,2 和 2- 是单 (1) 步,2+ 和 2- 是双 (2) 步,而 2- 和 3+ 又是单 (1) 步。
我的目标是以编程方式找出两个信用评级值之间的步数,直到步数差为 3。
我尝试使用条件(if-else/case)语句来解决这个问题,但更深入的分析得出的结论是,这将需要大约 50 多个这样的语句,这至少不是一件非常有效的事情在代码布局方面。
还有其他方法可以获取步数吗?也许使用临时数据结构,然后使用它进行查找?
注意:我可以将两个信用等级值从数据库中提取到 Java 代码中,然后计算步数。 或者,我需要创建一个数据库对象(如过程、函数),然后以这种方式计算步骤数,以便我的 Java 代码可以直接使用它。
【问题讨论】:
-
看起来给定评级
N、N是N*3 - 1、N-是N*3 -2和N+是N*3。从那里计算两个评级之间的步骤是微不足道的。 -
@FedericoklezCulloca,我认为这种方法并不总是有效,例如 7- 和 8。使用上述方法给我 (7*3)-2=19 和 (8*3)-1 =23.这两个值的差是4.而它们之间的步数只有2(7-,8+,8)
-
糟糕,我以为订单是
N-<N<N+。如果您移动计算以使其按您想要的顺序运行。 -
请提供样本数据和期望的结果。
-
@GordonLinoff ,以下是示例数据:信用评级 1 和 2 是我的输入,步骤是我的输出。在说明字段中,每个“=>”表示一个步骤。 imgur.com/a/JP72Vdz