用C++中的if/else语句验证输入值
所以我环顾四周,但我显然不是在正确的地方寻找,或者我误解了某些东西。用C++中的if/else语句验证输入值
给出的指示是,程序只能接受2.0和5.0之间的穹顶高度值。我感觉它与我的条件有关,但我不知道如何纠正它。
当我在调试过程中输入高度时,它跳到我的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);
}
表达
5.0>=vault1>=2.0
应在Python正常工作,但在C++中它解析为
(5.0>=vault1) >= 2.0
其中第一比较的结果进行比较,2.0,产生无义的结果。
在C++写的,而不是作为
2.0 <= vault1 && vault1 <= 5.0
如果执行此检查在多个地方,那么它可以帮助在清晰度和可维护性定义一个适当命名的布尔函数。
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
}
谢谢比尔兹!我认为这是这样的,但我不知道如何解决它。 – 2013-02-09 02:06:11
不应该是'if(vault1 = 2.0)'?既然这是一个数学表达式? – Rapptz 2013-02-09 02:06:50
@Rapptz:不,他正在检查*无效*。但是,他弄错了包容性的东西...... – 2013-02-09 02:07:47
是的,检查正在对所有三个金库高度输入执行。\ – 2013-02-09 02:12:07
我希望我能为最后一句话+2。 – Johnsyweb 2013-02-09 02:12:26
@HeatherT你在缓冲区中有一个流浪'\ n'。 – Rapptz 2013-02-09 02:19:19