Making a Calculator

Below is the complete code for the Making a Calculator Try It Out! problem.

The Basic Solution

This solution meets the basic requirements of the problem. Compare also, to the next section, which is a bit more user friendly, but uses some techniques that will be learned in the upcoming chapters.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CSharpBook.Examples.Calculator
{
    class Program
    {
        static void Main(string[] args)
        {
            // Get the different pieces we need.
            Console.WriteLine("Enter the first number: ");
            int number1 = Convert.ToInt32(Console.ReadLine());
            
            Console.WriteLine("Enter the second number: ");
            int number2 = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Enter the operation (+, -, *, /, %, or ^):");
            string operation = Console.ReadLine();

            // This will store the result eventually.
            int result;

            // Do something different depending on the operator that the user
            // typed.
            switch (operation)
            {
                case "+":
                    result = number1 + number2;
                    break;
                case "-":
                    result = number1 - number2;
                    break;
                case "*":
                    result = number1 * number2;
                    break;
                case "/":
                    result = number1 / number2;
                    break;
                case "%":
                    result = number1 % number2;
                    break;
                case "^":
                    result = (int)Math.Pow(number1, number2);
                    break;
                default: // This is a catch-all, if the operator is unknown.
                    Console.WriteLine("Unrecognized operator: " + operation);
                    result = 0;
                    break;
            }

            Console.WriteLine(number1 + " " + operation + " " + number2 + 
                        " = " + result);

            Console.ReadKey();
        }
    }
}

The Advanced Solution

This uses some things we will learn over the next few chapters to allow the user to enter their math problem all at once (as in "5 + 5") and it also allows the calculator to run repeatedly for doing multiple problems in a row.

If you're going through the book sequentially, this example will include a few concepts that you haven't seen yet.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CSharpBook.Examples.Calculator
{
    class Program
    {
        static void Main(string[] args)
        {
            // Print instructions.
            Console.WriteLine("Enter equation separated by spaces (ex. 5 + 5).");

            // Just keep looping. Perhaps better than this would be to allow
            // the user to type "exit" and break out of the loop then.
            while (true)
            {
                // Get input from the user, split it up into the three pieces
                // (separated by spaces), to be ready to do the calculation.
                Console.Write(">>>");
                string text = Console.ReadLine();
                string[] parts = text.Split(' ');
                int number1 = Convert.ToInt32(parts[0]);
                string operation = parts[1];
                int number2 = Convert.ToInt32(parts[2]);

                // The result will be stored in this variable.
                int result;

                // Do a different operation depending on the text the user
                // supplied.
                switch (operation)
                {
                    case "+":
                        result = number1 + number2;
                        break;
                    case "-":
                        result = number1 - number2;
                        break;
                    case "*":
                        result = number1 * number2;
                        break;
                    case "/":
                        result = number1 / number2;
                        break;
                    case "%":
                        result = number1 % number2;
                        break;
                    case "^":
                        result = (int)Math.Pow(number1, number2);
                        break;
                    default:
                        Console.WriteLine("Unrecognized operator: " + 
                                    operation);
                        result = 0;
                        break;
                }

                // Print out the results.
                Console.WriteLine(number1 + " " + operation + " " + number2
                            + " = " + result);
            }
        }
    }
}