所以我试图设置这个程序来计算帐户的余额。我需要确保将起始余额输入为正数。我有正面部分,但我如何确保输入也是数字而不是字母或其他非数字?
#include <iostream>
#include <cmath>
#include <iomanip>
#include <string>
using namespace std;
int main()
{
double startBal, // Starting balance of the savings account
ratePercent, // Annual percentage interest rate on account
rateAnnual, // Annual decimal interest rate on account
rateMonth, // Monthly decimal interest rate on account
deposit1, // First month's deposits
deposit2, // Second month's deposits
deposit3, // Third month's deposits
interest1, // Interest earned after first month
interest2, // Interest earned after second month
interest3, // Interest earned after third month
count; // Count the iterations
// Get the starting balance for the account.
cout << "What is the starting balance of the account?" << endl;
cin >> startBal;
while (startBal < 0 ) {
cout << "Input must be a positive number. Please enter a valid number." << endl;
cin >> startBal;
}
// Get the annual percentage rate.
cout << "What is the annual interest rate in percentage form?" << endl;
cin >> ratePercent;
// Calculate the annual decimal rate for the account.
rateAnnual = ratePercent / 100;
// Calculate the monthly decimal rate for the account.
rateMonth = rateAnnual / 12;
while (count = 1; count <= 3; count++)
{
}
return 0;
}
感谢!!!
答案 0 :(得分:4)
您可以验证cin
是否成功:
double startBal;
while (!(std::cin >> startBal)) {
std::cin.clear();
std::cin.ignore(std::numeric_limits<streamsize>::max(), '\n');
std::cout << "Enter a valid number\n";
}
std::cout << startBal << endl;
不要忘记#include <limits>
使用std::numeric_limits<streamsize>::max()
。
答案 1 :(得分:1)
double x;
std::cout << "Enter a number: ";
std::cin >> x;
while(std::cin.fail())
{
std::cin.clear();
std::cin.ignore(numeric_limits<streamsize>::max(),'\n');
std::cout << "Bad entry. Enter a NUMBER: ";
std::cin >> x;
}
将x
和double
替换为您需要的任何变量名称和类型。显然,将提示修改为必要的内容。
答案 2 :(得分:0)
你所要求的实际上非常困难。唯一完全正确的方法是将输入作为字符串读取,然后查看字符串是否采用正确的数字格式,然后将字符串转换为数字。我认为当你只是一个初学者时,这很困难。