private double _principal;
private double _interest;
if (value < 0.01 || value > 0.99)
if(value < 1 || value > 360)
public double monthly_payment {get;set;}
public double total_cost {get; set;}
public double total_interest {get; set;}
public Mortgage(double p, double IR, int t)
public void CalculatePayment()
double power_base = (1+interest);
double power_result = Math.Pow(power_base, terms);
monthly_payment = principal * (interest * power_result) / (power_result - 1);
total_cost = monthly_payment * terms;
total_interest = total_cost - principal;
public double CalculateClosingFees()
closing_fees = 0.005 * principal;
closing_fees = 0.004 * principal;
closing_fees = 0.006 * principal;
public static void Main (string[] args)
Console.WriteLine("Please enter your principal amount.");
double user_principalAmount;
string user_principal = Console.ReadLine();
bool IsValidDouble = double.TryParse(user_principal, out user_principalAmount);
if (IsValidDouble == false || user_principalAmount < 0)
Console.WriteLine("Please enter valid principal amount.");
Console.WriteLine("Please enter your interest rate.");
double user_interestRate;
string user_interest = Console.ReadLine();
bool IsValidDouble2 = double.TryParse(user_interest, out user_interestRate);
if (IsValidDouble2 == false || user_interestRate < 0.01 || user_interestRate > 0.99)
Console.WriteLine("Please enter a valid interest rate.");
Console.WriteLine("Please enter your terms.");
string user_term = Console.ReadLine();
bool IsValidInteger = Int32.TryParse(user_term, out user_terms);
if (IsValidInteger == false || user_terms < 1 || user_terms > 360)
Console.WriteLine("Please enter valid terms.");
Console.WriteLine("======================================");
Mortgage mortgage_1 = new Mortgage(user_principalAmount, user_interestRate, user_terms);
mortgage_1.CalculatePayment();
Console.WriteLine("Mortgage monthly payment = " + mortgage_1.monthly_payment);
Console.WriteLine("Mortgage closing fees = " + mortgage_1.CalculateClosingFees());