如何在while循环中使用continue语句

本文关键字:continue 语句 循环 while | 更新日期: 2023-09-27 17:54:29

让我们看看下面的代码片段:

int i = 0;
while ( i <= 10 )
{
    System.out.println(i);
    if ( i == 8 )
    {
        continue;
    }
    i++;
}

我必须在代码中做什么更改来避免无限循环?

如何在while循环中使用continue语句

在开始处递增,而不是在末尾:

int i = -1;
while ( i <= 10 )
{
    i++;
    System.out.println(i);
    if ( i == 8 )
    {
        continue;
    }
    // Presumably there would be some code here, or this doesn't really make much sense
}

或者,根据语言的不同,您可以在while语句中正确执行(无论选择i++还是++i,都要记住运算符优先级)

int i = 0
while ( i++ <= 10 )
{
    System.out.println(i);
    if ( i == 8 )
    {
        continue;
    }
    // Presumably there would be some code here, or this doesn't really make much sense
}

对于这种结构,我将质疑while循环的使用。如果你想在循环中使用计数器,for循环通常更合适。

让我们看一下您的代码,并逐行逐行地进行检查,而不是快速解决方案:

int i = 0;
while ( i <= 10 )
{
    System.out.println(i);
    if ( i == 8 )
    {
        continue;
    }
    i++;
}

i一开始是0,它小于10,因此它进入循环,输出0并递增到1。然后i变成2,3,4,…8

当它等于8时,它不是递增,而是返回到循环的开始,再次打印8。检查i的值(为8)并继续执行,输出8..它会一直这样,直到永远。

因此,在测试前增加数字,它将按预期工作。

把你的代码改成这样

int i = 0;
while ( i <= 10 )
{
    if ( i != 8 )
    {
        System.out.println(i);
    }
    i++;
}

我喜欢Eric Petroelje的回答。我建议这样做:

if (++i >= 8) continue;

此外,现在的编译器足够好,可以警告你这可能是一个无限循环。还有一些代码分析工具也会为您检测到这一点。

虽然这不是代码,但我不建议在大多数情况下使用,它确实达到了目的:

int i = 0;
while ( i <= 10 )
{
  Console.WriteLine(i.ToString());
  if ( i == 8 )
  {
    // Do some work here, then bail on this iteration.
    goto Continue;
  }
Continue:  // Yes, C# does support labels, using sparingly!
  i++;
}