Java 决策表或if-else语句

Java 决策表或if-else语句,java,if-statement,Java,If Statement,我需要知道是我做决策表更好,还是做else声明更好。如果决策表更适合以下规则,请告诉我制定决策表所需的基本代码。我尝试使用if-else语句,但是输出不是我想要的。这个问题适用于百家乐游戏,规则如下: 首先,如果任一玩家的牌数为8或9,称为“自然牌”,游戏结束,没有第三张牌 你曾经画过吗 第二,如果没有自然状态,玩家会收到第三张牌(“平局”或“命中”),或者没有 (“立拍”),根据以下规则: -玩家必须抽一张手牌值为5或更少的牌,并以6或更多的手牌持平。 -第三,如果没有自然条件,经销商将根据

我需要知道是我做决策表更好,还是做else声明更好。如果决策表更适合以下规则,请告诉我制定决策表所需的基本代码。我尝试使用if-else语句,但是输出不是我想要的。这个问题适用于百家乐游戏,规则如下:

  • 首先,如果任一玩家的牌数为8或9,称为“自然牌”,游戏结束,没有第三张牌 你曾经画过吗
  • 第二,如果没有自然状态,玩家会收到第三张牌(“平局”或“命中”),或者没有 (“立拍”),根据以下规则: -玩家必须抽一张手牌值为5或更少的牌,并以6或更多的手牌持平。 -第三,如果没有自然条件,经销商将根据以下规则抽签或站立 -如果玩家没有抽牌,那么庄家遵循与玩家相同的规则:庄家 必须用5张或更少的手抽一张牌,用6张或更多的手持平

  • -如果玩家确实抽到了第三张牌,则决定仅基于该牌的价值(称之为C3)和该牌的价值 经销商的手。庄家必须抽一张手牌价值低于手牌价值的牌 小于或等于某个极限L,其中L的计算如下:

  • 如果C3等于或大于8,则设Y=C3-10,否则设Y=C3。那么Y是从哪里来的 -2至7

  • o要得到L,将Y除以2,截断结果,然后加3。我会的 从2点到6点。o经销商必须使用L或
    少一点

原则上,当if-else-if子句增加到5个或更多(仅一个足以影响平均访问时间的值)实例时,您应该使用决策表/开关等(如果您担心通过案例进行高效处理)

更新:5未写入任何位置。我用它来说明一个概念,虽然我记得看到一些编译器在开关用例为8或更多时这样做,但那是很久以前的事了

其基本原理是,手动遍历每个if子句将导致线性溢出,而对于决策表,访问将是恒定时间

在实践中,只要案例数量变得重要,您的代码就已经被每一个优秀的编译器优化到一个决策表/哈希表中,因此这是不相关的

会有帮助的。请注意,开关或决策表或if-else的选择也取决于测试子句的结构。开关仅对整数值起作用。如果您无法将测试条件与如何随机访问联系起来,那么您可能没有其他选择,只能使用If-else-only。

原则上,如果If-else-If子句增加到5个或更多,您应该使用决策表/开关等(如果您担心通过案例进行高效处理)(只是一个足以影响平均访问时间的值)实例

更新:5并没有写在任何地方。我用它来说明一个概念,尽管我记得在开关案例为8或更多的时候看到一些编译器这样做,但那是很久以前的事了

其基本原理是,手动遍历每个if子句将导致线性溢出,而对于决策表,访问将是恒定时间

在实践中,只要案例数量变得重要,您的代码就已经被每一个优秀的编译器优化到一个决策表/哈希表中,因此这是不相关的


可能会有帮助。请注意,开关或决策表或if-else的选择也取决于测试子句的结构方式。开关仅适用于整数值。如果无法将测试条件与如何随机访问联系起来,则可能没有其他选择,只能使用if-else。

可维护的解决方案。在实际演示性能问题之前,不要担心优化问题。

选择可读性和可维护性最好的解决方案。在实际演示性能问题之前,不要担心优化问题。

从您的评论中,您提到使用决策表更好,因为有很多规则

这在一定程度上是正确的,但实际上并非如此

从您描述的内容来看,有很多不同用途的规则。无论您是在编写决策表还是手工,您仍然需要根据规则的用法和上下文对规则进行适当的组织,并分离“业务流”以使用这些规则

若并没有做到这一点,那个么使用决策表就更难编码,也更难阅读


当您考虑使用决策表(这意味着您将使用规则引擎)时,可读性可能不是最重要的因素。使用规则引擎的主要原因是为了促进将来规则的更改。如果您没有预见到这种需要,我强烈建议“手工制作”逻辑和正确的代码结构。

从您的评论中,您提到使用决策表更好,因为有很多规则

这在一定程度上是正确的,但实际上并非如此

从您描述的内容来看,有很多不同用途的规则。无论您是在编写决策表还是手工,您仍然需要根据规则的用法和上下文对规则进行适当的组织,并分离“业务流”以使用这些规则

若并没有做到这一点,那个么使用决策表就更难编码,也更难阅读

当您考虑使用决策表(这意味着您将使用规则引擎)时,可读性可能不是最重要的因素。使用规则引擎的主要原因是为了促进将来规则的更改。如果您没有预见到这种需要,我强烈建议“手工制作”逻辑,以及结构正确的代码。

选择