Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何排除无效输入,然后重新输入和if-else语句_C++ - Fatal编程技术网

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())
应该可以。