Console Calculator using Java


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
User Interaction: The program displays a menu, takes user input, and processes it accordingly.
Validation Handling: It ensures the user inputs valid numbers and prevents division by zero.
Reusable Methods: Functions like
add()
,subtract()
,multiply()
, anddivide()
keep the code clean and modular.Loop Execution: The calculator runs continuously until the user selects exit (option 5).
Happy Learning Java 😊.
Subscribe to my newsletter
Read articles from Ashish Shrestha directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
