私は自分で開発した作品を持っています.以下では、型キャストと例外発生の問題があります:
#include <iostream>
#include <string>
#include <exception>
using namespace std;
class WithdrawlCheck
{
int Balance;
int amount;
string s;
public:
void CheckBalance()
{
cout<< "Sorry,You don't have Balance to Perform this transaction";
}
void WithdrawlCash(int Balance)
{
if(Balance<500)
{
//cout<< "Sorry,You don't have Balance to Perform this transaction";
CheckBalance();
}
else
{
cout<<"enter the amount to withdrawl only in digits"<<endl;
try
{
cin>>amount;
}
catch(exception c)
{
cout<<"please enter proper values"<<endl;
WithdrawlCash(Balance);
}
if(Balance>amount)
{
Balance=Balance-amount;
cout<<"Your current Balance is:"<<Balance<<endl;
}
else{
cout<<"Insufficient Balance";
}
}
cout<<"do you want to Perform More Transaction,Say Y/N"<<endl;
cin>>s;
int num=s.compare("exit");
int n1=s.compare("Y");
int n2=s.compare("y");
if(num==0||n1==0||n2==0)
{
WithdrawlCash(Balance);
}
else
{
cout<<"Bye";
exit(0);
}
}
};
int main()
{
int Bal;
cout<<"**********"<<"Welcome User"<<"*********"<<endl;
cout<<"Enter the Balance"<<endl;
cin>>Bal;
WithdrawlCash c;
c.WithdrawlCash(Bal);
}
したがって、ここでの問題は、ユーザーがアルファベットの値を入力すると、catch によってキャッチされ、メッセージが表示されるはずですが、無限ループに入り、中断せずに cout ステートメントを実行することです。この例外をキャッチする方法と方法を教えてください。ユーザーが C++ でのみ数字を入力するように制限できます。