如果语句没有在for循环android中执行

时间:2012-04-24 05:45:18

标签: java android android-2.2-froyo

我有一个非常奇怪的问题。我有这个包含两个规则的Procedure对象。现在我想用for循环来循环这些规则并返回1规则。但我总是无效。看起来他正在跳过if语句并直接转到我的返回null部分。

第一条规则的名称是年龄,另一条规则的名称是意外。我在这里已经包含了这个方法。

我的日志回馈:

  rulename:'年龄'和变量:'意外'并且是真的吗?:'false'

     rulename:'意外'和变量:'意外'并且是真的吗?:'true'

private Rule searchRule(String ruleName)
    {
        List<Rule> test = this.procedureObject.getRules();

        for(Rule rule : test)
        {
            Log.d("debug", "rulename: '" + rule.getName() + "' and variable: '"+ruleName+"' and is true ?: '"+rule.getName().equalsIgnoreCase(ruleName)+"'");
            if(rule.getName().equalsIgnoreCase(ruleName))
            {
                return rule;
            }
        }

        return null;
    }

编辑:它现在有效。

我刚刚在调用代码中更改了这个:

Rule makeRule = RuleFactory.getNewRuleClassNameInstance(this.searchRule(ref2.getName()).getClass().getSimpleName());

为:

Rule foundRule = this.searchRule(ref2.getName());

Rule makeRule = RuleFactory.getNewRuleClassNameInstance(foundRule.getClass().getSimpleName());

然后它突然起作用。

2 个答案:

答案 0 :(得分:0)

你能试试吗?

if(rule.getName().equalsIgnoreCase(ruleName))
{
  Log.d("debug", "rulename: '" + rule.getName() + "' and variable: '"+ruleName+"' and is true ?: '"+rule.getName().equalsIgnoreCase(ruleName)+"'");
  return rule;
}

答案 1 :(得分:0)

我改变了:

Rule makeRule = RuleFactory.getNewRuleClassNameInstance(this.searchRule(ref2.getName()).getClass().getSimpleName());

为:

Rule foundRule = this.searchRule(ref2.getName());
Rule makeRule = RuleFactory.getNewRuleClassNameInstance(foundRule.getClass().getSimpleName());

然后它似乎有效。