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

C. *_*ith 1 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;
                }
            }
Run Code Online (Sandbox Code Playgroud)

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

And*_*ner 5

条件结束时的两个分支都带有一个返回:

if (...) {
  // ...
  return;
} else {
  // ...
  return;
}
Run Code Online (Sandbox Code Playgroud)

所以i++永远不会增加.

请注意,基本for语句的一般结构是:

for ( ForInit ; Expression ; ForUpdate ) Statement
Run Code Online (Sandbox Code Playgroud)

相当于while循环:

{
  ForInit;
  while (Expression) {
    Statement;
    ForUpdate;
  }
}
Run Code Online (Sandbox Code Playgroud)

因此,如果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.
Run Code Online (Sandbox Code Playgroud)