为什么我的for循环不循环?我的for循环行被认为是死代码

时间:2016-05-27 11:58:00

标签: java for-loop

我不确定为什么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;
                }
            }

有人可以向我解释我做错了什么和解决方案吗?谢谢!

2 个答案:

答案 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建议它是一个死代码。