我不确定为什么Eclipse会说“i ++”是死代码,为什么我没有增加。
for(int i = 0; i < holdings.length; i++)
{
if(holdings[i].holdingID.equals(userHoldingIDInput) == true)
{
holdings[i].print();
System.out.println();
return;
}
else
{
System.out.println("The Holding ID you entered was not found,"
+ " please try again." + "\n");
return;
}
}
有人可以向我解释我做错了什么和解决方案吗?谢谢!
答案 0 :(得分:5)
条件结束时的两个分支都带有一个返回:
if (...) {
// ...
return;
} else {
// ...
return;
}
所以i++
永远不会增加。
请注意basic for
statement的一般结构是:
for ( ForInit ; Expression ; ForUpdate ) Statement
是equivalent to the while
loop:
{
ForInit;
while (Expression) {
Statement;
ForUpdate;
}
}
因此,如果Statement
无条件返回,则永远不会执行ForUpdate
,因此它已被正确识别为死代码。
我不确定你打算做什么,但我认为你的else
分支实际上应该在循环之外:
for(int i = 0; i < holdings.length; i++) {
if (holdings[i].holdingID.equals(userHoldingIDInput)) {
// ...
return;
}
}
System.out.println("The Holding ID you entered was not found,"
+ " please try again." + "\n");
return; // Might be unnecessary; depends upon what follows.
答案 1 :(得分:0)
你从两个条件都回来了。 i ++会在循环的下一次迭代中得到评估。因为这永远不会发生,你的IDE建议它是一个死代码。