我正在尝试编写代码,它具有较低的限制和较高的限制(以摄氏度为单位)和增量,并且吐出显示转换为华氏度的表格。反正我遇到问题的是输入的防弹。Temp转换输入防弹?
这里是我的代码
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;
}
输出类似于
什么情况是,它要求我为LOWERLIMIT,当我键入的东西它没有做任何事情,它只是停留只有当我再次写入它继续。 因此,当我把8它没有做什么,然后我把它继续。与higherLimit相同,我输入10没有任何反应,然后我输入100并继续。
Coudnt弄清楚该怎么做。我尝试了不同的循环,如果语句不起作用。
最后一点。不,这不是HW。
我不需要你告诉我,我不应该这样写,我只需要明白发生了什么问题。
如果有什么你认为我应该告诉你们请评论它,我会编辑请不要只是给-1和离开。
在while循环之前总是有一个cin操作,因此它第一次“什么都不做”。它在变量中读取它,然后在while条件内点击第二个'cin >> var'语句。删除循环条件以外的。 – Borgleader 2014-10-08 15:08:22