【问题标题】:issue while trying to exit a loop尝试退出循环时出现问题
【发布时间】:2021-03-16 03:55:58
【问题描述】:

我有一个带 case 的开关,其中一个我有一个带有多个 if 的 for 循环,如果用户给出“b”表示否,我想转到菜单(退出这种情况),但它没有t 用 do{} 做任何事情,while(exiting =! false),程序继续运行,我不能使用中断, 它看起来像这样:

case 'E': { 
    bool exiting = true;
    do {
        cout << "For how many minutes do you want to book the service? ";
        cin >> minutes;
        for(int i = 0; i < cantServ; i++) {
           if(minutes > listaServicio[position]->getMaxTime()){ 
               cout<< "the machine has a time limit, do you want to book it for 
               less time? (a= yes, b = no) ";
                cin>>anwser; 
                if(answer== 'a'){
                    cout << "how many minutes do you want to book? "; 
                    cin >> minutes; 
                  } else { 
                    exiting = false; }               
                 }  
              }
           } while(exiting != false);
          
           break;
           }

【问题讨论】:

  • 缩进很奇怪,可能会隐藏不匹配的大括号。

标签: c++ loops switch-statement


【解决方案1】:

您可能想在exiting = false; 之后添加一个中断,以便跳出内部 for 循环并直接进入 while-do,然后应该退出。

【讨论】:

  • 感谢您的关注!我已经尝试过了,但似乎仍然没有任何影响:(
  • 您能否重新格式化您的示例代码,并尝试使用普通的while循环而不是do-while(我认为没有理由在这里使用do-while,因为您在第一个之前初始化退出为true无论如何运行),而正常的 while 更容易阅读 imo。
【解决方案2】:

由于你不能使用break,你可以改为扩展for循环条件:

for (int i = 0; i < cantServ && exiting != false; i++) {

这样,您始终检查exiting 的状态,并且一旦您将exiting 设置为false,循环就可以根据需要终止。

【讨论】:

  • 逻辑听起来像它的作品,但我已经尝试添加扩展循环条件,它仍然运行到循环之后的其他条件:(
猜你喜欢
  • 1970-01-01
  • 2016-06-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 2021-04-22
  • 2021-01-03
  • 1970-01-01
相关资源
最近更新 更多