【发布时间】:2014-01-21 19:17:36
【问题描述】:
我试图用 C++ 编写一个银行程序,您可以在其中查看钱包和银行帐户中的金额,以及存款和取款。当我尝试运行它时,它可以让我输入,但是当我输入任何内容时,它会一次又一次地重复Money in Wallet: 20,直到我得到堆栈溢出,我认为这有点讽刺,将其发布在一个名为 Stack Overflow 的网站上.
这是我目前的代码:
#include <iostream>
using namespace std;
float money= 20.00;
float account=100.00;
float amount;
bool cmd;
void wallet()
{
cout<<"Money in Wallet: "<<money<<endl;
}
void bank()
{
cout<<"Money in Bank: "<<account<<endl;
}
void deposit()
{
cout<<"How much do you want to deposit?: ";
cin>>amount;
if (money>=amount)
{
account = account+amount;
money = money-amount;
}
else
{
cout<<"You don't have enough money!\n";
}
}
void withdraw()
{
cout<<"How much do you want to withdraw?: ";
cin>>amount;
if(account>=amount)
{
money = money+amount;
account = account-amount;
}
else
{
cout<<"There isn't enough money in your bank account!\n";
}
}
void prompt()
{
cmd="null";
cout<<">";
cin>>cmd;
if (cmd="wallet")
{
wallet();
cmd="null";
prompt();
}
else{
cout<<"Unknown Command.";
cmd="null";
prompt();
}
if (cmd="bank")
{
bank();
}
else{cout<<"Unknown Command.";}
if (cmd="deposit")
{
deposit();
}
else{cout<<"Unknown Command.";}
if (cmd="withdraw")
{
withdraw();
}
else{cout<<"Unknown Command.";}
}
int main()
{
prompt();
}
请帮忙!
【问题讨论】:
-
为什么世界上的每一位教授都分配他的 CS 101 学生设计一家银行?我希望这不是我的银行后端的制作方式。
-
如果你用调试器单步调试它,你会在大约 30 秒内找到它。
-
您可能正在无限循环或无限递归调用函数。您为什么不尝试使用调试器单步执行它以找出问题所在?
-
用双等号 (==) 而非单等号 (=) 来测试相等性。
-
为变量和方法使用更好的名称。例如,“account”对于账户余额来说是一个非常糟糕的名称,bank() 对于打印账户余额的方法来说是一个非常糟糕的名称。为什么存款()会被“你没有足够的钱!”拒绝?
标签: c++ stack-overflow bank