我已调用的此函数调用了另一个不返回任何内容的函数,如果输入q,则while语句应允许从函数退出。 它不起作用。 当我输入q或Q时,它会打印谢谢,再见。 然后开始切换,就好像不满足条件时一样。 有任何想法吗?

void Watch::userInteraction()
{
    daysInMonthSwitch();
    char answer;
    while (answer != 'q' || answer != 'Q')
    {
        cout << "What would you like to do?" << endl;
        cout << "Enter r to run." << endl;
        cout << "Enter c to change time or date." << endl;
        cout << "Enter q to quit." << endl;
        cin >> answer;

        switch(answer)
        {
        case 'r':
            tick();
        break; 
        case 'R':
            tick();
        break;
        case 'c':
            changeTimeOrDate();
        break;
        case 'C':
            changeTimeOrDate();
        break;
        case 'q':
            cout << "Thank you, goodbye";
            break;
        case 'Q':
            cout << "Thank you, goodbye";
            break;
        default :
            userInteraction();
        }
    }
}

===============>>#1 票数:1

while (answer != 'q' || answer != 'Q')

应该

while (answer != 'q' && answer != 'Q')

您还应该初始化answer

同样,这不会引起任何问题,但是如果您有两个具有相同动作的开关标签,则可以通过省略break来组合它们以节省一些行:

case 'R':
case 'r':
    tick();
    break;

  ask by Tyler Chronister translate from so

未解决问题?本站智能推荐: