如何在while循环中继续使用语句?

时间:2013-01-17 19:33:35

标签: c# java while-loop continue

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

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

我必须在代码中进行哪些更改以避免无限循环?

4 个答案:

答案 0 :(得分:8)

在开始时而不是在结尾处进行增量:

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循环通常更合适。

答案 1 :(得分:2)

而不是quickfix解决方案,让我们看一下你的代码一分钟,然后逐行逐步完成:

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++;
}

答案 2 :(得分:0)

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

if (++i >= 8) continue;

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

答案 3 :(得分:0)

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

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++;
}