C++ 如何排除无效输入,然后重新输入和if-else语句
我不熟悉编码,需要帮助C++ 如何排除无效输入,然后重新输入和if-else语句,c++,C++,我不熟悉编码,需要帮助 if(x == "D" || x == "d"){ cout << "How many 5c coins? ==> "; cin >> j; five += j; cout << "How many 10c coins? ==> "; cin >> a; ten += a; cout <<
if(x == "D" || x == "d"){
cout << "How many 5c coins? ==> ";
cin >> j;
five += j;
cout << "How many 10c coins? ==> ";
cin >> a;
ten += a;
cout << "How many 20c coins? ==> ";
cin >> q;
twenty += q;
cout << "How many 50c coins? ==> ";
cin >> k;
fifty += k;
if(x==“D”| x==“D”){
cout>j;
五+=j;
cout>a;
十+=一;
cout>q;
二十+=q;
cout>k;
五十+=k;
我希望用户输入一个整数,所以我声明int=j,a,q,k
例如,如果用户输入字母P,它将不会出错,用户可以重新输入,您将需要一个循环:
do {
int num;
if(cin >> num)
{ /* input is good */
...
break;
}
else
{ /* error */ }
} while(true);
当用户输入无效输入时,使用循环允许用户重新输入输入 你可以做:
bool validinput = true;
if(x == "D" || x == "d"){
do{
validinput = true;
cout << "How many 5c coins? ==> ";
cin >> j;
if (cin.fail()) {
cout << "Please enter a valid value.." << endl;
cin.clear(); //reset state bits
cin.ignore(numeric_limits<streamsize>::max(), '\n'); //discard all characters from the input buffer, or until a newline is read.
validinput = false;
}
}while(validinput == false);
//repeat same to validate other numeric inputs
bool validinput=true;
如果(x==“D”| x==“D”){
做{
validinput=true;
cout>j;
如果(cin.fail()){
不能,你没有声明“int=j,a,q,k”。与其描述你做了什么,不如显示代码。尽可能少地显示问题,但足够让阅读它的人理解它的作用。我声明它已经准备好了,因为错误案例std::cin
,其状态需要清理,以便能够接收进一步的输入。你能解释更多吗?我对编码不太熟悉,但实际上不知道多少h抱歉。哇!谢谢你,伙计!就这样!谢谢你,谢谢你,你是最好的!哦,现在我该怎么做才能使它不接受负数?@TengkuFahad:你可以添加一个检查j<0
,使程序不接受输入的负数j
。用if(cin.fail())
替换if(cin.fail())
应该可以。