Java - 如何将参数传递给 if 语句 "if "F(x )"found, pass "x"到 F 函数

标签 java function if-statement parameter-passing

我所做的是以有限字母表字符串的形式制定生产规则,将其复制到 char 数组中,然后通过 if 语句运行它,该语句根据字符调用函数。

如“lff[f]”调用functionL、functionF、functionF、functionOpenB、functionF、functionCloseB。

目前是:

workRuleArr= stringProdrule.toCharArray();
for  (char c=0; c < workRuleArr.length; c++){
    if (workRuleArr[c] == 'f')
     {
          functionF();

      }
      if (workRuleArr[c] == 'l')
     {
          functionL();

      }

等等

这很好并且有效,但是:

我如何从生产规则(例如“l(100)ff..”)将参数传递给这些函数,以便它调用 functionL(x)... 其中 x = 100 并将 100 传递给函数? ?

并且在同一个产生式规则字符串中,x 可能有许多不同的值。用户在程序开始时一次性输入规则,因此需要在同一个产生式规则中处理多个参数

任何想法将不胜感激,如果问题不清楚,请告诉我。谢谢

最佳答案

在我看来,你们拥有的那些“规则函数”都有类似的目的,因此它们遵循相同的接口(interface), 喜欢

interface Rule{
    void executeRule();
}

然后你有不同的规则来实现该接口(interface),例如

class RuleF implements Rule{
        void executeRule(){
            //execute rule F
        }
}

class RuleL implements Rule{
        void executeRule(){
            //execute rule L
        }
}

然后您需要一种简单的方法将字符与给定规则关联起来。 使用 HashMap,例如:

Map<Character, Rule> ruleMap = new HashMap<Character, Rule>();
ruleMap.add('f', new RuleF());
ruleMap.add('l', new RuleL());

这样你就可以删除所有这些“如果”,例如

workRuleArr= stringProdrule.toCharArray();
for  (char c=0; c < workRuleArr.length; c++){
    Rule rule = ruleMap.get(workRuleArr[c]);
    rule.executeRule();
}

现在,如果您需要规则接口(interface)接收参数, 您还需要一个类似的 Map 对象来将角色与您需要传递的参数相关联。

您到底在构建什么?某种状态机?

干杯,祝你好运! :-)

关于Java - 如何将参数传递给 if 语句 "if "F(x )"found, pass "x"到 F 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10375804/

相关文章:

Java SSL 握手异常 : no cipher suites in common

java - spring security 方法在运行时和动态安全

将函数作为参数传递给函数的 C 方法

javascript - 如何检测函数是否是最后一个被调用的

javascript - javascript中的多个函数调用,即combine(foo)(bar)

php - 三元运算符中的多个条件安全吗?

java - 我无法获得更改 if 语句的按钮

java - 方法未返回正确的值 (Java)

r - 如何在R中的map函数中使用if else

java - Oracle XML 解析与 Java XML 解析