我对Java很新,并试图找出如何转换下面的代码 to for循环或for循环。
do {
testPages.push(testParentPage);
if(homePage != null && testParentPage.getPath().equals(homePage.getPath())){
isParent = true;
break;
}
} while((testParentPage = testParentPage.getParent()) != null);
非常感谢任何帮助!谢谢!
答案 0 :(得分:5)
它可以在这样的for循环中重写:
for (; testParentPage != null; testParentPage = testParentPage.getParent()) {
testPages.push(testParentPage);
if(homePage != null && testParentPage.getPath().equals(homePage.getPath())){
isParent = true;
break;
}
}
我想我必须承认,我不知道它是否有任何好处。
答案 1 :(得分:4)
尝试
for(; testParentPage != null; testParentpage = testParentPage.getParent()) {
...
}
for循环结构是(变量初始化;布尔测试;赋值) - 通常变量是整数,测试是<或>,并且赋值是一个增量,但不一定是这种情况。
答案 2 :(得分:0)
实际上do .. while
循环在这种情况下看起来非常合适。如果你有一个“普通”集合或某些东西给你一个迭代器,for
或foreach
循环将是首选工具。但是在这种情况下(使用for
循环向上导航树结构)恕我直言会让人感到困惑。
除此之外,{/ 1}}循环的条件总是在执行循环体之前进行评估。因为你需要至少执行一次身体,这会使事情变得更加困难和/或复杂。
编辑:当然,在循环开始时执行空值检查实际上是有意义的,因为你在循环体中调用for
上的方法。
答案 3 :(得分:0)
Re:for-each循环。
每个循环的A迭代遍历集合或数组(see docs),因此您将无法(立即)将do-while循环转换为for-each循环,因为您正在迭代自定义 - 定义的层次结构。
如果您有一个List<TestPageParent>
(或者类型名称是什么),那就可以了。 TestPageParent[]
也是如此。或Collection<TestPageParent>
。