У меня очень странная проблема. У меня есть этот объект Procedure, который содержит два правила. Теперь мне захотелось обходить эти правила с помощью цикла for и вернуть 1 правило. Но я всегда получаю нуль. Похоже, что он пропускает оператор if и напрямую переходит к моей возвратной нулевой части.если инструкция не выполнена для цикла андроида
Имя первого правила - возраст, а имя другого правила - несчастные случаи. Я включил метод здесь.
Мой журнал дает ответ:
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;
}
EDIT: он работает сейчас.
Я только что изменил это в вызывающем коде:
Rule makeRule = RuleFactory.getNewRuleClassNameInstance(this.searchRule(ref2.getName()).getClass().getSimpleName());
к:
Rule foundRule = this.searchRule(ref2.getName());
Rule makeRule = RuleFactory.getNewRuleClassNameInstance(foundRule.getClass().getSimpleName());
А потом вдруг работает.
Он уверен, что условный блок должен быть выполнен. Таким образом, мы можем быть на 100% уверены, что работает, возможно, выкидывают оператор журнала непосредственно перед каждым «возвратом» (вы перешли в отладчик?). –
С вашим кодом code.just нет ничего плохого, поэтому вы можете проверить свой результат выполнения журнала. Или может быть не синхронизирована ..! – user370305
@MichaelBurr Да, я шагнул шаг за шагом через отладчик. Это действительно странное поведение. –