2012-04-24 70 views
2

我有一個非常奇怪的問題。我有這個包含兩個規則的Procedure對象。現在我想用for循環來循環這些規則並返回1規則。但我總是得到空。看起來他正在跳過if語句並直接進入我的返回null部分。如果語句不執行for循環android

第一條規則的名稱是年齡,另一條規則的名稱是事故。我在這裏包括了這個方法。

我的日誌回饋:

RuleName中: '年齡' 和變量: '事故',是真的? '假'

RuleName中: '事故' 和變量: '事故'並且是真實的: '真'

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()); 

然後它突然的作品。

+0

它肯定看起來應該執行條件塊。因此,我們可以100%確定哪個正在運行,可能在每個「返回」之前拋出一個日誌語句(是否已經在調試器中進行了檢查?)。 – 2012-04-24 05:52:26

+0

你的代碼沒有問題,只要正確調試你的代碼,這樣你就可以檢查你的Log語句執行。或者可能不同步。 – user370305 2012-04-24 05:52:38

+0

@MichaelBurr是的,我一步一步地通過調試器。這真是奇怪的行爲.. – 2012-04-24 05:54:55

回答

0

我改變:

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

到:

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

,然後它似乎工作。

0

你可以試試嗎?

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