Skip to main content

Calculator In Java Language

Java Swing is a GUI (graphical user Interface) widget toolkit for Java. Java Swing is a part of Oracle’s Java foundation classes . Java Swing is an API for providing graphical user interface elements to Java Programs.Swing was created to provide more powerful and flexible components than Java AWT (Abstract Window Toolkit).

In this article we will use Java Swing components to create a simple calculator with only +, -, /, * operations.

  1. add(Component c) : adds component to container.
  2. addActionListenerListener(ActionListener d) : add actionListener for specified component
  3. setBackground(Color c) : sets the background color of the specified container
  4. setSize(int a, int b) : sets the size of container to specified dimensions.
  5. setText(String s) : sets the text of the label to s.
  6. getText() : returns the text of the label.

Java program to create a simple calculator with basic +, -, /, * using java swing elements. 
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class calculator extends JFrame {
    private JTextField inputField;
    private JButton btns[];
    String expression = "";
    String setPrev = "";
    int ans = 0;
    calculator() {
        setLayout(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        JLabel heading = new JLabel("Mini Project Calculator");
        heading.setBounds(200, 10, 300, 30);
        heading.setFont(new Font("times new roman", Font.BOLD, 20));
        add(heading);
        inputField = new JTextField();
        inputField.setHorizontalAlignment(JTextField.RIGHT);
        // inputField.setEnabled(false);
        inputField.setBounds(125, 60, 250, 40);
        // inputField.setLayout(BorderLayout.NORTH);
        inputField.setFont(new Font("times new roman", Font.BOLD, 18));
        add(inputField);
        String symbols[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "+", "-", "*", "/", "%", "Ans",
                "Clear" };
        JPanel p1 = new JPanel();
        p1.setLayout(new GridLayout(5, 4, 2, 3));
        p1.setBounds(0, 100, 500, 400);
        add(p1);
        btns = new JButton[17];
        for (int i = 0; i < 17; i++) {
            btns[i] = new JButton(symbols[i]);
            btns[i].setFont(new Font("times new roman", Font.BOLD, 20));
            btns[i].addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    JButton sourceButton = (JButton) evt.getSource();
                    try {
                        if (sourceButton.getText().compareTo("Clear") != 0) {
                            if (sourceButton.getText().compareTo("+") == 0) {
                                ans = Integer.parseInt(inputField.getText());
                                expression = "" + ans + "+";
                                setPrev = "+";
                            } else if (sourceButton.getText().compareTo("-") == 0) {
                                ans = Integer.parseInt(inputField.getText());
                                expression = "" + ans + "-";
                                inputField.setText("");
                                setPrev = "-";
                            } else if 
                            (sourceButton.getText().compareTo("*") == 0) {
                                ans = Integer.parseInt(inputField.getText());
                                expression = "" + ans + "*";
                                inputField.setText("");
                                setPrev = "*";
                            } else if (sourceButton.getText().compareTo("/") == 0) {
                                ans = Integer.parseInt(inputField.getText());
                                expression = "" + ans + "/";
                                inputField.setText("");
                                setPrev = "/";
                            } else if (sourceButton.getText().compareTo("%") == 0) {
                                ans = Integer.parseInt(inputField.getText());
                                // System.out.println("Addition ans=> " + ans);
                                // expression = "";
                                expression = "" + ans + "%";
                                inputField.setText("");
                                setPrev = "%";
                            } else if (sourceButton.getText().compareTo("Ans") == 0) {
                                if (setPrev.compareTo("+") == 0) {
                                    // inputField.setText(expression);
                            System.out.println("Expression Is: " + expression);
                          expression = expression.substring(findIndexOfExp(expression), expression.length());
                                    System.out.println(expression);
                                    ans += Integer.parseInt(expression);
                                    inputField.setText(Integer.toString(ans));
                                } else if (setPrev.compareTo("-") == 0) {
                                    System.out.println("Expression Is: " + expression);
                          expression = expression.substring(findIndexOfExp(expression), expression.length());
                                    System.out.println(expression);
                                    ans -= Integer.parseInt(expression);
                                    inputField.setText(Integer.toString(ans));
                                } else if (setPrev.compareTo("*") == 0) {
                                    System.out.println("Expression Is: " + expression);
                  expression = expression.substring(findIndexOfExp(expression), expression.length());
                                    System.out.println(expression);
                                    ans *= Integer.parseInt(expression);
                                    inputField.setText(Integer.toString(ans));
                                } else if (setPrev.compareTo("/") == 0) {
                                    System.out.println("Expression Is: " + expression);
                   expression = expression.substring(findIndexOfExp(expression), expression.length());
                                    System.out.println(expression);
                                    ans /= Integer.parseInt(expression);
                                    inputField.setText(Integer.toString(ans));
                                } else if (setPrev.compareTo("%") == 0) {
                                    System.out.println("Expression Is: " + expression);
                           expression = expression.substring(findIndexOfExp(expression), expression.length());
                                    System.out.println(expression);
                                    ans %= Integer.parseInt(expression);
                                    inputField.setText(Integer.toString(ans));
                                }
                                setPrev = "";
                            }
                            else {
                                expression += sourceButton.getText();
                                inputField.setText(expression);
                            }
                        } else {
                            expression = "";
                           inputField.setText("");
                            // inputField.setText(expression);
                            ans = 0;
                        }
                    } catch (Exception e) {
                        System.out.println("e");
                    }
                }
            });
            p1.add(btns[i]);
        }
    }
    private int findIndexOfExp(String s) {
        int i = s.length() - 1;
        while (i >= 0) {
            if (s.charAt(i) == '+' || s.charAt(i) == '-' || s.charAt(i) == '*' || s.charAt(i) == '%'
                    || s.charAt(i) == '/') {
                return i + 1;
            }
            i--;
        }
        return -1;
    }
    private float findResult(String s) {
        float ans = 0;
        int start = 0;
        System.out.println("printing expression " + s);
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == '+') {
                ans += Float.parseFloat(s.substring(start, i - start));
                if (i <= s.length()) {
                    ans += Float.parseFloat(s.substring(i + 1, s.length()));
                }
            }
        }
        return ans;
    }
    private int result(int... args) {
        int ans = 0;
        for (int data : args) {
            ans += data;
        }
        return ans;
    }
    public static void main(String[] args) {
        calculator c1 = new calculator();
        c1.setSize(500, 540);
        c1.setVisible(true);
    }
}

This calculator can perform basic arithmetic operations, including addition, subtraction, multiplication, and division.


OUTPUT

in this output we perform multiplication expression 




Comments

Popular posts from this blog

HackerRank JavaScript Certification Intermediate Solutions

 'use strict'; const fs = require('fs'); const https = require('https'); process.stdin.resume(); process.stdin.setEncoding('utf-8'); let inputString = ''; let currentLine = 0; process.stdin.on('data', function(inputStdin) {       inputString += inputStdin; }); process.stdin.on('end', function() {     inputString = inputString.split('\n');     main(); }); function readLine() {       return inputString[currentLine++]; } const axios =  require('axios'); async function getNumTransactions(username) {     // write your code here     // API endpoint: https://jsonmock.hackerrank.com/api/article_users?username=<username>     // API endpoint: https://jsonmock.hackerrank.com/api/transactions?&userId=<userId>     try {         const {data} = await axios.get(`https://jsonmock.hackerrank.com/api/article_users?username=${username}`);         if(dat...