我有一个方法,检查对象的属性满足一些要求,它返回true,如果有的话,否则为false。但该函数返回总是假的,即使参数是正确的。这里是我做工作的原代码和解决方法,但我仍然不知道问题的根源,所以我张贴在这里看到,如果有人能够理解这个问题。
类包含类SacVariable的ArrayList中,也有方法isValid()的。如果在ArrayList所有SacVariable对象是有效的,那么这个大家伙是有效的,太。完美的作品,在测试过程中的SacVariable.isValid()返回真或假的情况。但如果内部循环总是读假...
我认为逻辑是清楚的,但我会解释为清晰的缘故。
// Original code (does not work because always returns false)
public boolean isValid()
{
if (!this.getList().isEmpty())
{
for (SacVariable var : this.getList())
{
if (!var.isValid())
{
return false;
}
}
return true;
}
return false;
}
如果ArrayList是空(大小== 0)我什么都不做,马上返回false。
如果有是在ArrayList中的东西,我检查每一个来看看他们是有效的,如果至少有1是假的,然后我立即返回false。如果循环结束,然后我返回true,因为它意味着所有的对象SacVariable是有效的。
{C}
周围的工作是相同的,我最初分离条件的改善,希望找到问题的可读性,失败的,所以我决定增加一个计数器,如果validConditions == this.getList()的大小(),那么我知道所有SacVariables是有效的。它的工作...为什么没有其他方式?它可能是令人难以置信的小型或琐碎,但我的生活,我无法看到它。
SacVariable.isValid()并不总是返回假。我检查。这里的奥秘是,尽管事实上,该方法确实返回true循环被打破。
我不寻求替代代码给我的人,我只希望大家在这里看到,如果有人发现了一个与代码的问题表明,该方法。