#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;作为第一个循环期间的输入,第一个循环结束但在第二个循环开始后立即进入无限循环。为什么会这样?
答案 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