检查输入是否是特定类型和特定范围

时间:2016-10-07 20:22:33

标签: c++ while-loop

我正在尝试测试用户输入的输入,因此我的程序无法破解。我正在使用的线是:

while (check != 0){
    cout << "Please enter a number 1 - 4 (area of: circle, rectangle, triangle or quit)" << endl;
    cin >> response;


    if ((isdigit(response)) && ((response >= 1) && (response <= 4))){
        check = 0;

    }
    else{
        cout << "You did not enter a valid digit (1 - 4)" << endl;
        check = 1;
    }

} // End of while loop

我要做的是检查输入是否都是一个数字(具体是整数)并且在1和4的范围内。出于某种原因,我输入的每个值都被认为是无效的。我应该改变什么或做什么来获得我想要的预期结果? (这样它将检查输入是否为整数,以及该整数是否介于1和4之间(包括1和4))。

2 个答案:

答案 0 :(得分:1)

假设response的类型为char,则需要使用字符常量'1''4',而不是整数常量1和{{1} }}

4

答案 1 :(得分:0)

if (response >= '1' && response <= '4')就是你所需要的。如果输入的字符在正确的范围内,则必须是数字,因此不需要isdigit的测试。也不是多余的括号。