【发布时间】:2014-10-08 15:04:49
【问题描述】:
我正在尝试编写具有下限和上限(以摄氏度为单位)和增量的代码,并吐出一个显示转换为华氏温度的表格。无论如何,我遇到的问题是输入的防弹。
这是我的代码
int main() {
double lowerLimit=0;
double higherLimit=0;
double step=0;
cout<<"Please give in a lower limit, limit >= 0: 10\n\n";
cin>>lowerLimit;
while(!(cin >> lowerLimit) || lowerLimit < 0 || lowerLimit > 500)
{
cout << "invalid input!\n";
cin.clear();
cin.ignore( numeric_limits<int>::max(), '\n' );
}
cout<<"Please give in a higher limit, 10 > limit <= 500: 20 \n\n";
cin>>higherLimit;
while(!(cin >> higherLimit) || higherLimit <= 10 || higherLimit > 500)
{
cout << "invalid input!\n";
cin.clear();
cin.ignore( numeric_limits<int>::max(), '\n' );
}
cout<<"Please give in a step. 0 < step <= 10: 4\n\n";
cin>>step;
while(!(cin >> step) || step <= 0 || step >10)
{
cout << "invalid input!\n";
cin.clear();
cin.ignore( numeric_limits<int>::max(), '\n' );
}
cout<<lowerLimit<<higherLimit<<step<<"\n\n";
cout<<"Thanks!";
return 1;
}
输出看起来像
发生的情况是它要求我输入下限,当我输入某些内容时它不会做任何事情,它只会停留在那里,只有当我再次写入时它才会继续。 因此,当我输入 8 时它什么也没做,然后我输入 0 它继续。与higherLimit相同,我输入10没有任何反应,然后我输入100并继续。
无法弄清楚该怎么做。我尝试了不同的循环,但 if 语句不起作用。
最后一点。不,这不是硬件。
我不需要你告诉我我不应该这样写我只需要了解发生了什么问题。
如果有什么你认为我应该告诉你们的,请发表评论,我会编辑,请不要只给 -1 就离开。
【问题讨论】:
-
在 while 循环之前总是有一个 cin 操作,因此它为什么第一次“什么都不做”。它在变量中读取它,然后在 while 条件内点击第二个
cin >> var语句。删除循环条件之外的那些。
标签: c++ validation input