C++中“while”循环的即时退出

16

如何立即退出while循环而不跳转到该块的结尾?

例如:

while (choice != 99)
{
    cin >> choice;
    if (choice == 99)
        //Exit here and don't get additional input
    cin>>gNum;
}

有什么想法吗?


14
我愿意打赌,答案就在你被分配阅读的材料中。 - Bill the Lizard
4
@akappa,我同意,但是问总比不问好。 - Charlie Martin
@David Bejar 记住,目标不仅是删除“作业”标签,而是编辑好的问题并关闭/删除坏的问题。 - Sam
如果选择是99,while循环将会立即终止。while(choice != 99) { if(choice == 99) } - Chris
10个回答

59

使用 break 吗?

while(choice!=99)
{
  cin>>choice;
  if (choice==99)
    break;
  cin>>gNum;
}

2
假设选择不是99进入循环——这似乎是可能的——while循环可以简化为“while(true)” - Drew Dormann
1
是的,将结果存储在数组中也可能会有帮助 ;) - Andomar

10
cin >> choice;
while(choice!=99) {
    cin>>gNum;
    cin >> choice
}

在这种情况下,您不需要休息。

但是,欸,你重复了流提取代码。 - Lightness Races in Orbit
2
所以,“不要重复代码”并不是你应该以宗教的方式遵循的教条。在这种情况下,我认为这个解决方案更自然。 - akappa
3
复制“cin”并没有错。实际上,这比本帖中的所有其他答案都更有效率。在while循环内放置if语句会使循环执行两倍的检查。 - xikkub
这应该是正确的答案。 - Oyster773

6
使用 break,如下所示:
while(choice!=99)
{
  cin>>choice;
  if (choice==99)
    break; //exit here and don't get additional input
  cin>>gNum;
}

这也适用于for循环,并且是结束switch语句的关键字。更多信息在这里


4

是的,break命令可以使用。然而,你可能会发现许多程序员在可能的情况下不愿使用它,而是使用条件if语句来执行循环中的其他操作(从而不执行它并干净地退出循环)

像这样的代码将能够实现你所需求的功能,而无需使用break命令。

while(choice!=99) {
    cin >> choice;
    if (choice != 99) {
        cin>>gNum;
    }
}

3

break;.

while(choice!=99)
{
   cin>>choice;
   if (choice==99)
       break;
   cin>>gNum;
}

2

嗯,break是什么意思?


1
while(choice!=99)
{
  cin>>choice;
  if (choice==99)
    exit(0);
  cin>>gNum;
}

相信我,这将退出循环。如果这样不起作用,那就没有办法了。请注意,这可能不是你想要的...

6
也许加入一个::ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0)的语句,这样while循环就不会在任何情况下重新启动了!(请注意,原文中可能包含计算机编程术语和符号) - Andomar

1

是的,我很确定你只需放置

    break;

正好在你想要退出的地方

就像这样

    if (variable == 1)
    {
    //do something
    }
    else
    {
    //exit
    break;
    }

0

尝试

break;

-2

你不应该使用break语句来退出循环。 当然,你可以这样做,但并不意味着你应该这样做。 这并不是一个好的编程实践。 更优雅的退出方式如下:

while(choice!=99)
{
    cin>>choice;
    if (choice==99)
        //exit here and don't get additional input
    else
       cin>>gNum;
}

如果选择是99,那么就没有其他事情要做了,循环终止。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接