我正在尝试使用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();
}
请帮忙!
答案 0 :(得分:6)
我可以看到您的代码存在多个问题。
首先,您在函数内部调用函数prompt()
,使其recursively call一遍又一遍地自我调整,直到您拥有stackoverflow。
其次,将输入存储在bool中。您可能打算使用std::string
第三,在if语句中,您不检查值是否相等,而是在使用=
运算符时进行设置。如果要检查两个值是否相等,请使用==
符号。
第四,您使用if
语句是错误的。如果要检查多个条件的值,则应将它们全部放在if else
内,并将它们全部放在一起。你正在做的是将它们分成多个if语句,每个语句都遵循打印Unknown Command.
]的其他条件
看到这看起来如何看作业,我不会给你完整的代码,让你有机会学习。但是如果你确定了上面的要点,那么你就可以开始使用功能性程序了。
答案 1 :(得分:0)
你的结构需要更像这样
while(true)
{
prompt();
if(command == "quit")
break;
else if(command == "bank")
bank();
else if(.....)
....
else
cout << "bad command"
}