当我输入" 9 +"程序进入无限循环时

时间:2015-10-12 09:47:06

标签: c++

#include <iostream>
using namespace std;

void check_positive () {
    cout << "Number given must be positive. Please try again." << endl;
}

int main() {
    int pesos, interest, compound, year;
    do {
        cout << "How many pesos did you deposit? ";
        cin >> pesos;
        if (pesos <= 0) {
            check_positive();
    }
    } while (pesos <= 0);
    do {
        cout << "What is the interest? ";
        cin >> interest;
        if (interest <= 0) {
            check_positive();
        }
    } while (interest <= 0);
}

每当我运行此代码并输入&#34; 9 +&#34;作为第一个循环期间的输入,第一个循环结束但在第二个循环开始后立即进入无限循环。为什么会这样?

1 个答案:

答案 0 :(得分:0)

您输入的字符9+不是数字,并尝试将它们加载到只能接受数字的整数变量int pesos中。 Cin无法将9+转换为数字,因此它进入了失败状态,您可以通过更改第一个循环来检查:

do {
    cout << "How many pesos did you deposit? ";
    cin >> pesos;

    if (cin.fail()) {
        cout << "You didn't enter a number!";
        return EXIT_FAILURE;
    }

    if (pesos <= 0) {
        check_positive();
}

要小心你在第二个循环中也可能遇到同样的问题,因此你需要再次检查cin.fail()

有关其他内容:ios::fail() reference