Я не могу получить свой код (ниже) для выполнения исключений!
- Во-первых, банковский счет пуст.
- 1500 внесен депозит
- Попытка снять 1050, но лимит овердрафта составляет 1000
- Поскольку сумма вывода превышает лимит овердрафта,
Исключение OverdraftEx должно отображать мое сообщение (но это не так).
- Затем попытка снять 1000, которая должна быть успешной, и
баланс должен стать 500
- Теперь при попытке вывести 50, но второе сообщение об исключении DailyLimitEx должно отображаться значение, которое превышает дневной лимит, поскольку дневной лимит вывода составляет 1000, и он уже был снят за день, опять же, это исключение не отображается.
- Затем на экране появится Конец дня, который сбрасывает DailyLimit обратно на 0.
- Тогда разрешается попытка снять 50, потому что это новый день.
Я не могу отобразить сообщения об исключениях.
Можете ли вы помочь? в конце есть пример вывода.
Спасибо
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
Account account = new Account();
try
{
double overdraftLimit = 1000;
double dailyWithdrawlLimit = 1000;
}
catch (OverdraftEx e1)
{
Console.WriteLine(e1.Message);
}
catch (DailyLimitEx e2)
{
Console.WriteLine(e2.Message);
}
account.display();
account.deposit(1500);
account.withdraw(1050);
account.withdraw(1000);
Console.WriteLine("-------------------");
account.withdraw(50);
account.endDay();
account.withdraw(50);
Console.ReadLine();
return;
}
}
class OverdraftEx : Exception
{
private static string msg = " Sorry, the amount you are trying to withdraw exceeds your allowed overdraft limit.";
public OverdraftEx() : base(msg)
{
}
}
class DailyLimitEx : Exception
{
private static string msg1 = " Sorry, you have exceeded your allowed daily withdrawal limit.";
public DailyLimitEx() : base(msg1)
{
}
}
class Account
{
public int accountID { get; set; }
public double amount;
public double balance;
public double Balance
{
get
{
return balance;
}
set
{
if (amount > overdraftLimit)
{
OverdraftEx ex1 = new OverdraftEx();
throw ex1;
}
}
}
public double overdraftLimit { get; set; }
public double dailyWithdrawlLimit
{
get
{
return dailyWithdrawlLimit;
}
set
{
if (amount > dailyWithdrawlLimit - 1000)
{
DailyLimitEx ex2 = new DailyLimitEx();
throw ex2;
}
}
}
public Account()
{
accountID = 10;
balance = 0;
return;
}
public Account(int accID, double accBalance)
{
accountID = accID;
balance = accBalance;
return;
}
public void withdraw(double amount)
{
Console.WriteLine("");
Console.WriteLine(" Attempting to withdraw $" + Math.Round(amount, 2));
balance = balance - amount;
Console.WriteLine(" Account #: " + accountID);
Console.WriteLine(" Your new balance is $" + Math.Round(balance, 2));
}
public void deposit(double amount)
{
// calculating the balance after depositing money
if (amount > 0)
{
Console.WriteLine(" Depositing $" + Math.Round(amount, 2));
balance = balance + amount;
Console.WriteLine(" Account #: " + accountID);
Console.WriteLine(" Balance: $" + Math.Round(balance, 2));
}
else
Console.WriteLine(" Sorry, amount is invalid");
Console.WriteLine("");
return;
}
public void display()
{
Console.WriteLine("");
Console.WriteLine(" Account ID: " + accountID);
Console.WriteLine(" Balance: $" + Math.Round(balance, 2));
Console.WriteLine("");
return;
}
public void endDay()
{
Console.WriteLine("");
Console.WriteLine(" End Day");
Console.WriteLine(" Account ID: " + accountID);
Console.WriteLine(" Balance: $" + Math.Round(balance, 2));
return;
}
}
}
Пример вывода:
Примечание: первое сообщение об ошибке в примере вывода должно отображаться: «Извините, сумма, которую вы пытаетесь снять, превышает допустимый лимит овердрафта», а не то, что показано ниже.
Пример вывода