使用C ++中的if / else语句验证输入值

时间:2013-02-09 02:02:48

标签: c++ if-statement validation

所以我环顾四周,但我显然要么找不到合适的地方,要么我误解了什么。

给出的指示是程序只能接受2.0到5.0之间的值以获得拱顶高度。我觉得它与我的if条件有关,但我不确定如何纠正它。

当我在调试期间输入高度时,它跳转到我的else语句,并且没有给我机会重新输入新输入。

//Retrieving name and first vault and date
cout << "Please enter the name of the pole vaulter.\n";
getline(cin, name);
cout << "Please enter the height of the first vault attempt.\n";
cin >> vault1;
if(5.0 >= vault1 >= 2.0) {
    cout << "What date was this vault accomplished?\n";
    getline(cin, date1);
} else {
    cout << "Only jumps between 2.0 meters and 5.0 meters are valid inputs.       Please enter the height of the first vault attempt.\n";
    cin >> vault1;
    cout << "What date was this vault accomplished?\n";
    getline(cin, date1);
}

2 个答案:

答案 0 :(得分:4)

表达式

5.0>=vault1>=2.0

应该可以在Python中正常工作,但在C ++中它被解析为

(5.0>=vault1) >= 2.0

将第一次比较的结果与2.0进行比较,产生无意义的结果。

在C ++中将其改为

2.0 <= vault1 && vault1 <= 5.0

如果您在多个地方执行此检查,那么它可以帮助清晰度和可维护性定义适当命名的布尔函数。

答案 1 :(得分:1)

C ++不支持数学表达式。

变化:

if (5.0>=vault1>=2.0)

要:

if (vault1 > 5.0 || valut1 < 2.0)
{
   // invalid vault1
}
else
{
   // valid vault1
}

或者如果您想使用&&

if (vault1 <= 5.0 && valut1 > 2.0)
{
   // valid vault1
}