Консоль должна выдавать исключение, если я ввожу отрицательное число, но оно не работает. Я что-то здесь упускаю? - PullRequest
0 голосов
/ 05 февраля 2020
public decimal CurrentBalance = 1000.00m;
public decimal WithdrawCurrentAmount { get; set; }

public decimal MakeWithdraw()
{
    Console.WriteLine("How much would you like to withdraw from your Current account?", WithdrawCurrentAmount);

    if (WithdrawCurrentAmount < 0) 
    {
        throw new Exception("You cannot withdraw a negative amount" );               
    }

    WithdrawCurrentAmount = Convert.ToDecimal(Console.ReadLine());

    CurrentBalance = CurrentBalance - WithdrawCurrentAmount;
    Console.WriteLine("\nAvailable Current Balance is now: {0}", CurrentBalance);
    return CurrentBalance;     
}

Ответы [ 2 ]

2 голосов
/ 05 февраля 2020

Вы должны переместить строку Convert до оператора if, в противном случае значение, введенное пользователем, не будет задано в вашей тестовой переменной

Вам также следует использовать Decimal.TryParse метод, позволяющий избежать ошибки, когда пользователь вводит что-то вроде «10 баксов» или что-либо, что не может быть преобразовано в десятичное значение.

1 голос
/ 05 февраля 2020

Вы проверяете значение WithdrawCurrentAmount перед назначением значения, введенного с консоли - значение по умолчанию decimal равно 0.0, поэтому ваше условие if всегда возвращает false;

Вам следует присвойте значение перед проверкой:

WithdrawCurrentAmount = Convert.ToDecimal(Console.ReadLine()); // this line now is before checking 

if (WithdrawCurrentAmount < 0) 
{
   throw new Exception("You cannot withdraw a negative amount" );   
}

CurrentBalance = CurrentBalance - WithdrawCurrentAmount;
Console.WriteLine("\nAvailable Current Balance is now: {0}", CurrentBalance);

return CurrentBalance;  

Также, если вы введете что-то, что не может быть преобразовано в decimal, вы получите исключение.

...