c ++避免布尔标志在使用return 0时离开循环

时间:2017-10-13 21:41:43

标签: c++

我有一个while循环,它包含两个switch语句,一些输出代码和一些嵌套的while循环来检查输入错误。问题是,当用户输入“Q”退出并跳过其余代码时,我想打破switch语句。所以我基本上遇到了两个问题。

  1. 如果我使用do while,那么它将变成一个返回0和一个布尔标志,而(true)在逻辑上违背它自己。
  2. 如果我删除do while并且只使用return 0,则代码不能多次执行。
  3. 我已经说过这是一个流问题而不是语法问题,并且想知道我应该如何构建流程以使其成为“干净的代码”。

    一个简单的例子:

    do {
        char answer;
        cout << "Type answer: ";
        cin >> answer;
    
        switch (answer) {
        case A:
            cout << "hello";
            break;
    
        case B:
            cout << "more weird output";
            break;
        case Q:
            cout << "Goodbye";
            return 0;
        }
    
        cout << "more useless output that I want to skip";
        cout << "how does this even work";
    } while (run);
    

    这里我有一个返回0,它完全否定了对while(run)标志的需要。这是一个糟糕的编码实践,我被告知,所以我想知道如何以良好的方式构建这个?

1 个答案:

答案 0 :(得分:-1)

在这里,我认为我修复了代码。确保输入大写Q而不是小写。你也忘记了你的角色' '。你的逻辑是正确的 - 只是小错误:) Goodluck!

#include <iostream>

using namespace std;


int
main ()
{
  bool run = true;
  do
    {
      char answer;
      cout << "Type answer: ";
      cin >> answer;

      switch (answer)
    {
    case 'A':
      cout << "hello";
      break;

    case 'B':
      cout << "more weird output";
      break;
    case 'Q':
      cout << "Goodbye";
      return 0;
    }

      cout << "more useless output that I want to skip";
      cout << "how does this even work";
    }while (run);

  return 0;
}