我不能在 else if 语句中调用函数

时间:2021-03-23 16:16:23

标签: c++ cin

#include <iostream>
#include <vector>

void Invalid_input(int& num1, int& num2) 
{
    while (!cin)
    {
        cout << "You entered an incorrect value!" << '\n';
        cin.clear();
        cin.ignore(100, '\n');
        cout << "Please input again : ";
        cin >> num1 >> num2;
    }
}

int main() {
    while (1) { 
        int num_of_tower = 0, num_of_disk = 0;

        cout << "Please select the number of towers and disks" << '\n'
            << "tower and disk : ";
        cin >> num_of_tower >> num_of_disk;

        if (!cin) Invalid_input(num_of_tower, num_of_disk);
        
        else if (num_of_tower < 2)
            Invalid_input(num_of_tower, num_of_disk);
    }
}  

这只是整个代码的一部分。我无法在 Invalid_input 语句中调用函数 else if(例如,在输入 1 和 3 之后)。

除此函数调用外,执行所有操作。我该如何解决?

1 个答案:

答案 0 :(得分:0)

您的 Invalid_input 函数正在被调用……但它什么也没做!这是因为,对于 1num_of_tower 输入和 num_of_disk 的有效输入,cin 流上不会出现错误,因此 {{1 }} 函数中的循环将不会运行(因为 while 测试将为 false)。

您应该做的是将 while (!cin) 循环更改为 while() {...} 循环,该循环将始终至少运行一次,即使 do { ... } while(); 未处于错误状态:

cin

您可能还想在该函数中添加进一步检查,以确保给出的第一个输入至少为 2(如在 void Invalid_input(int& num1, int& num2) { do { cout << "You entered an incorrect value!" << '\n'; cin.clear(); cin.ignore(100, '\n'); cout << "Please input again : "; cin >> num1 >> num2; } while (!cin); } 函数中):

main