Write a java program THAT USES STACKS data type push pop etc
Write a java program THAT USES STACKS data type (push, pop, etc).
Create a Calculator w/ GUI
Write a program that graphically displays a working calculator for simple infix expressions that consist of: single-digit operands, the operators: +, -, *, and /, and parentheses.
Make the following assumptions:
unary operators (e.g. -2) are illegal
all operations, including division, are integer operations (and results are integers)
the input expression contains no embedded spaces and no illegal characters
the input expression is a syntactically correct infix expression
division by zero will not occur (consider how you can remove this restriction)
Create a GUI application, the calculator has a display and a keypad of 20 keys, which are arranged as follows:
C
<
Q
/
7
8
9
*
4
5
6
-
1
2
3
+
0
(
)
=
As the user presses keys to enter an infix expression, the corresponding characters appear in the display. The C (Clear) key erases all input entered so far; the < (Backspace) key erases the last character entered. When the user presses the = key, the expression is evaluated and the result appended to the right end of the expression in the display window. The user can then press C and enter another expression. If the user presses the Q (Quit) key, the calculator ceases operation and is erased from the screen.
| C | < | Q | / | 
| 7 | 8 | 9 | * | 
| 4 | 5 | 6 | - | 
| 1 | 2 | 3 | + | 
| 0 | ( | ) | = | 
Solution
import java.util.Stack;
 import java.util.*;
 import java.io.*;
 public class StackCalculation
 {
 public static void main (String[] args) throws Exception
 {
 String[] str = {\"22+\"};
 String string = convertStringArrayToString(str);
 System.out.println(string);
 Stack<String> stack = new Stack<String>();
 stack.add(string);
 double a = 0;
 double b = 0;
 double sum = 0;
 while (!stack.isEmpty())
 {
 if(stack.peek().equals(\"+\"))
 {
   
        String elem = stack.peek();
 a = Double.parseDouble(elem);
stack.pop();
 b = Double.parseDouble(stack.peek());
 stack.pop();
 sum = a + b;
 //Write something to push back the sum of the last 2 numbers a + b
 stack.push(\"\" + sum);
 }
else if(stack.peek().equals(\"*\"))
 {
 String elem = stack.peek();
 a = Double.parseDouble(elem);
 stack.pop();
 String elem = stack.peek();
 b= Double.parseDouble(elem);
 stack.pop();
 sum = a * b;
 //Write something to push back the product of the last 2 numbers a * b
 stack.push(\"\" + sum);
 }
else if(stack.peek().equals(\"-\"))
 {
 String elem = stack.peek();
 a = Double.parseDouble(elem);
 stack.pop();
 String elem = stack.peek();
 b= Double.parseDouble(elem);
 stack.pop();
 sum = a - b;
 //Write something to push back the difference of the last 2 numbers a - b
 stack.push(\"\" + sum);
 }
else if(stack.peek().equals(\"/\"))
 {
 String elem = stack.peek();
 a = Double.parseDouble(elem);
 stack.pop();
 String elem = stack.peek();
 b = Double.parseDouble(elem);
 stack.pop();
 sum = a / b;
 //Write something to push back the quotient of the last 2 numbers a/b
 stack.push(\"\" + sum);
 }
else
 {
 //Convert the last item in the stack to a double and push
 //this into the stack
 String elem = stack.peek();
 a = Double.parseDouble(elem);
 stack.push(\"\" + a);
 }
}
System.out.println(stack);
 //System.out.println(string);
 }
private static String convertStringArrayToString(String[] strArr) {
 StringBuilder sb = new StringBuilder();
 for(String str : strArr) sb.append(str);
 return sb.toString();
 }
 }



