【问题标题】:What happens when a for loop has no increment expression in Java? [closed]当 for 循环在 Java 中没有自增表达式时会发生什么? [关闭]
【发布时间】:2016-11-23 01:12:41
【问题描述】:

我发现我的循环中有一个 return 语句。无论如何感谢大家的帮助。

我在 Java 中遇到了一个没有递增/递减表达式的 for 循环。事实上,我的 IDE 告诉我表达式是死代码。

没有递增/递减表达式的循环:

for(int i = 5; i!=0;)
  //Do something...

然后每当我尝试像这样添加i--

for(int i = 5; i!=0; i--)

我的 IDE 告诉我 i-- 是死代码,这让我很困惑,因为我不知道我将如何更改。所以我的问题是,这个循环在 Java 中是如何工作的?这是一个无限循环吗? JVM 会自行递减 i 吗?等等……

小例子:

for(int i=10; i!=0;i--)
  //Do something...

完成:

public void methodName(int number){
  for(int i = number; i!=0; i--)
    //Do something...

【问题讨论】:

  • 你能发一个minimal reproducible example吗?单独判断一行,删除i--是错误的。这将导致无限循环——除非i 在循环体内的其他地方被修改。
  • @JohnKugelman 是的。一会儿……
  • 如果你想要一个无限循环,只需使用while (true) 或其他。
  • 顺便说一句,您似乎误解了“最小、完整和可验证的示例”一词。它意味着一段代码,它同时是最小的和完整的。 (并且是可验证的,这意味着理想情况下我们应该能够编译和运行它。)
  • 我发现了问题。我在 for 循环中有一条返回线。感谢大家的帮助!

标签: java for-loop decrement


【解决方案1】:

简短的回答:

for (int i = 5; i != 0;) {
    System.out.println(i);
} // ,

将永远输出整数 5。

相当于:

int i = 5;
while (i != 0) {
    System.out.println(i);
}

它永远输出 5,因为 i 总是 5,而 i 总是 不同于 0。为了摆脱循环,您必须明确更新i 的值,直到它的值保持为 0。

【讨论】:

    【解决方案2】:

    它应该适用于所有小于 5 的 i。

    所以你需要将 for 循环写成:

    for(int i = 5; i>=0; i--)
    

    这将是一个无限循环:

    for(int i = 5; i!=0;){
        System.out.println(i);
    }
    

    因为它将继续为所有不等于 0 的 i 工作。

    【讨论】:

    • 我知道这会起作用,但我想知道没有增量/减量表达式的循环会做什么。此外,如果 i 小于零,可能需要他们的循环无限运行,!= 似乎是一种好方法。
    • i!=0没有错。
    猜你喜欢
    • 1970-01-01
    • 2010-10-16
    • 2012-10-12
    • 2015-10-23
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 2018-06-15
    相关资源
    最近更新 更多