public static void Main(string[] args){
const int TYPE_POSITIVE_INT = 1;
const int TYPE_AMOUT_OR_INTEREST_RATE = 2;
Console.WriteLine("== Welcome to the financial calculator! ==");
Console.WriteLine("Enter your choice");
string inputMenu = Console.ReadLine();
if (ValidateValue(inputMenu, TYPE_MENU)){
menu = int.Parse(inputMenu);
Console.WriteLine("===Simple interest calculator===");
Console.WriteLine("Enter the principal amount");
string inputPrincipalAmount = Console.ReadLine();
if (ValidateValue(inputPrincipalAmount, TYPE_AMOUT_OR_INTEREST_RATE)){
Console.WriteLine("Enter the interest rate per time period (%): ");
string inputInterestRate = Console.ReadLine();
if (ValidateValue(inputInterestRate, TYPE_AMOUT_OR_INTEREST_RATE)){
Console.WriteLine("Enter the number of time period");
string inputNumTimePeriod = Console.ReadLine();
if (ValidateValue(inputNumTimePeriod, TYPE_POSITIVE_INT)){
double principalAmount = double.Parse(inputPrincipalAmount);
double interestRate = double.Parse(inputInterestRate);
int numTimePeriod = int.Parse(inputNumTimePeriod);
double finalValue = SimpleInterest(principalAmount, interestRate, numTimePeriod);
double interest = finalValue - principalAmount;
Console.WriteLine("Interest : $" + interest);
Console.WriteLine("Total amount: $" + finalValue);
Console.WriteLine("===Compound interest calculator===");
Console.WriteLine("Enter the principal amount: ");
string inputPrincipalAmount = Console.ReadLine();
if (ValidateValue(inputPrincipalAmount, TYPE_AMOUT_OR_INTEREST_RATE)){
Console.WriteLine("Enter the interest rate per time period (%): ");
string inputInterestRate = Console.ReadLine();
if (ValidateValue(inputInterestRate, TYPE_AMOUT_OR_INTEREST_RATE)){
Console.WriteLine("Enter the number of time period: ");
string inputNumTimePeriod = Console.ReadLine();
if (ValidateValue(inputNumTimePeriod, TYPE_POSITIVE_INT)){
Console.WriteLine("Enter the number of compounds per time period: ");
string inputNumCompounds = Console.ReadLine();
if (ValidateValue(inputNumCompounds, TYPE_POSITIVE_INT)){
double Principalamount = double.Parse(inputPrincipalAmount);
double interestRate = double.Parse(inputInterestRate);
int numCompounds = int.Parse(inputNumCompounds);
int numTimePeriod = int.Parse(inputNumTimePeriod);
double finalValue = FinalValueWithCompoundInterest(Principalamount,
double interest = finalValue - Principalamount;
Console.WriteLine("Interest : $" + interest);
Console.WriteLine("Total amount: $" + finalValue);
Console.WriteLine("===EXIT===");
public static double FinalValueWithCompoundInterest(double principalAmount,
return principalAmount * Math.Pow((1 + (ratePerPeriod / 100) / numCompounds), numCompounds * numPeriod);
public static double SimpleInterest(double principalAmount, double ratePerperiod, int numPeriod){
return principalAmount * (1 + (ratePerperiod / 100) * numPeriod);
public static bool ValidateValue(string input, int type){
result = double.TryParse(input, out tempDouble);
Console.WriteLine("Input must be at least 0.");
else if (type == 0 || type == 1){
result = int.TryParse(input, out tempInt);
Console.WriteLine("Input must be whole number");
if (type == 0 && tempInt > 3){
Console.WriteLine("Input must be at most 3.");
Console.WriteLine("Input must be at least 0.");
Console.WriteLine("Input must be numeric");
public static void DisplayMenu(){
Console.WriteLine("1. Simple interest calculator");
Console.WriteLine("2. Compound interest calculator");
Console.WriteLine("3. EXIT");