Console Calculator using Java

Ashish ShresthaAshish Shrestha
3 min read

Calculators are fundamental tools in programming and a great way to practice basic operations and user interaction. In this article, we will build a simple console-based calculator in Java that performs addition, subtraction, multiplication, and division.

Prerequisites

  • Basic knowledge of Java

  • Java Development Kit (JDK) installed

  • Any Java IDE or a text editor

Features of Our Calculator

  • Allow users to choose an operation from a menu

  • Take two numerical inputs

  • Perform the selected operation

  • Handle invalid inputs and division by zero

  • Provide an option to exit

Writing the Java Program

Here is the complete Java program:

import java.util.Scanner;

public class App {
    // Scanner object to take user input
    public static Scanner input = new Scanner(System.in);

    // Variables to store user choices and numbers
    public static int choice = 0;
    public static double firstNumber = 0;
    public static double secondNumber = 0;
    public static double result = 0;

    // Method to display the menu options
    public static void displayMenu() {
        System.out.println("**Java Calculator**");
        System.out.println("[1] Add");
        System.out.println("[2] Subtract");
        System.out.println("[3] Multiply");
        System.out.println("[4] Divide");
        System.out.println("[5] Exit");
        System.out.print("Choice -> ");

        // Validate user input
        if (input.hasNextInt()) {
            choice = input.nextInt();
        } else {
            input.next(); // Consume invalid input
            choice = 0; // Set invalid choice
        }
    }

    // Method to display an error message for an invalid choice
    public static void invalidChoice() {
        System.out.println("**Error: Invalid choice selected.**");
    }

    // Method to display an error message for an invalid input
    public static void invalidInput() {
        System.out.println("**Error: Invalid input entered.**");
    }

    // Method to get user input for numbers
    public static void getInput() {
        System.out.print("First number -> ");
        if (input.hasNextDouble()) {
            firstNumber = input.nextDouble();
        } else {
            input.next(); // Consume invalid input
            firstNumber = 0;
            secondNumber = 0;
            invalidInput();
            return;
        }

        System.out.print("Second number -> ");
        if (input.hasNextDouble()) {
            secondNumber = input.nextDouble();
        } else {
            input.next(); // Consume invalid input
            firstNumber = 0;
            secondNumber = 0;
            invalidInput();
            return;
        }
    }

    // Method to perform addition
    public static double add(double firstNumber, double secondNumber) {
        return firstNumber + secondNumber;
    }

    // Method to perform subtraction
    public static double subtract(double firstNumber, double secondNumber) {
        return firstNumber - secondNumber;
    }

    // Method to perform multiplication
    public static double multiply(double firstNumber, double secondNumber) {
        return firstNumber * secondNumber;
    }

    // Method to perform division
    public static double divide(double firstNumber, double secondNumber) {
        if (secondNumber == 0) {
            System.out.println("**Error: Cannot divide by zero.**");
            return 0;
        }
        return firstNumber / secondNumber;
    }

    // Main method - program execution starts here
    public static void main(String[] args) {
        do {
            displayMenu(); // Show menu options

            if (choice == 1) {
                // Addition logic
                getInput();
                result = add(firstNumber, secondNumber);
                System.out.printf("%.2f + %.2f = %.2f\n", firstNumber, secondNumber, result);
            } else if (choice == 2) {
                // Subtraction logic
                getInput();
                result = subtract(firstNumber, secondNumber);
                System.out.printf("%.2f - %.2f = %.2f\n", firstNumber, secondNumber, result);
            } else if (choice == 3) {
                // Multiplication logic
                getInput();
                result = multiply(firstNumber, secondNumber);
                System.out.printf("%.2f * %.2f = %.2f\n", firstNumber, secondNumber, result);
            } else if (choice == 4) {
                // Division logic
                getInput();
                result = divide(firstNumber, secondNumber);
                if (secondNumber != 0) {
                    System.out.printf("%.2f / %.2f = %.2f\n", firstNumber, secondNumber, result);
                }
            } else if (choice == 5) {
                // Exit the program
                System.out.println("**Exited**");
            } else {
                // Invalid choice error
                invalidChoice();
            }
            System.out.println("--------------------------");
        } while (choice != 5);
    }
}

Explanation of the Code

  1. User Interaction: The program displays a menu, takes user input, and processes it accordingly.

  2. Validation Handling: It ensures the user inputs valid numbers and prevents division by zero.

  3. Reusable Methods: Functions like add(), subtract(), multiply(), and divide() keep the code clean and modular.

  4. Loop Execution: The calculator runs continuously until the user selects exit (option 5).

Happy Learning Java 😊.

0
Subscribe to my newsletter

Read articles from Ashish Shrestha directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Ashish Shrestha
Ashish Shrestha