c # Пользовательские исключения - PullRequest
0 голосов
/ 06 марта 2019

Я не могу получить свой код (ниже) для выполнения исключений!

  1. Во-первых, банковский счет пуст.
  2. 1500 внесен депозит
  3. Попытка снять 1050, но лимит овердрафта составляет 1000
  4. Поскольку сумма вывода превышает лимит овердрафта, Исключение OverdraftEx должно отображать мое сообщение (но это не так).
  5. Затем попытка снять 1000, которая должна быть успешной, и баланс должен стать 500
  6. Теперь при попытке вывести 50, но второе сообщение об исключении DailyLimitEx должно отображаться значение, которое превышает дневной лимит, поскольку дневной лимит вывода составляет 1000, и он уже был снят за день, опять же, это исключение не отображается.
  7. Затем на экране появится Конец дня, который сбрасывает DailyLimit обратно на 0.
  8. Тогда разрешается попытка снять 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;
        }
    }
}

Пример вывода: Примечание: первое сообщение об ошибке в примере вывода должно отображаться: «Извините, сумма, которую вы пытаетесь снять, превышает допустимый лимит овердрафта», а не то, что показано ниже. Пример вывода

1 Ответ

0 голосов
/ 06 марта 2019

Первое: вы не используете правильное имя в своих методах withdraw() и deposit(). Это должно быть Balance = Balance - amount, а не balance = balance - amount. Второе: в установщике для Balance вы не работаете с новым значением, которое дано установщику. Вы можете ссылаться на новое значение по ключевому слову value, также вы не обновляете вспомогательное поле для вашей собственности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...