A GUI scientific calculator, capable of performing mathematical expressions with trigonometric, logarithmic, factorial, exponential and arithmetic functions written in Java using Java Swing.
This project demonstrates how to build a scientific calculator with a graphical user interface, that can solve a mathematical expression involving trigonometric, logarithmic, factorial, exponential or arithmetic functions in Java. Java Swing has been used to provide the GUI components.
The layout of the calculator has been designed using JButtons to help the user select specific mathematical operations and JLabel to display the expression and the result. The mathematical expression entered by the user is stored in the topmost JLabel as a String, whereas the result is displayed on the 2nd JLabel.
How the equations are solved:-
The equations cannot be simply solved in the left to right order because different mathematical functions have different precedence. Therefore, the equation is solved using 2 stacks. The value stack stores operands and the operator stack stores operators.
The expression is scanned from left to right. If the element is an operand, it is pushed into the value stack. If it is an operator, then its precedence is compared to the operator on top of the stack.
If the precedence of the incoming operator is greater than the operator on top of the stack, the incoming operator is pushed in. Else, the operator on top of the stack is popped out along with (one or two) operands from the value stack. the operator is applied to the operand(s) and the result is pushed back into the value stack.
This process is continued until the operator stack is empty, and the element remaining in the value stack is the final answer.
The final result is then displayed on the JLabel.