diff --git a/src/dataANDcalc/java/stack/ArrayStack.java b/src/dataANDcalc/java/stack/ArrayStack.java index 737d067..cedd7de 100644 --- a/src/dataANDcalc/java/stack/ArrayStack.java +++ b/src/dataANDcalc/java/stack/ArrayStack.java @@ -2,19 +2,20 @@ package stack; import queue.ArrayQueue; +import java.util.Objects; import java.util.Scanner; -public class ArrayStack { +public class ArrayStack { private int top = -1; private int maxSize; - private int[] stack; + private Object[] stack; public ArrayStack(int maxSize) { this.maxSize = maxSize; - stack = new int[maxSize]; + stack = new Object[maxSize]; } public int getTop() { @@ -33,11 +34,11 @@ public class ArrayStack { this.maxSize = maxSize; } - public int[] getStack() { + public Object[] getStack() { return stack; } - public void setStack(int[] stack) { + public void setStack(Object[] stack) { this.stack = stack; } @@ -58,20 +59,20 @@ public class ArrayStack { stack[top] = data; } - public int pop(){ + public E pop(){ if(isEmpty()){ throw new RuntimeException("栈空了"); } - int value = stack[top]; + E value = (E) stack[top]; top --; return value; } - public int top(){ + public E top(){ if(isEmpty()){ throw new RuntimeException("栈空了"); } - int value = stack[top]; + E value = (E) stack[top]; return value; } @@ -85,7 +86,7 @@ public class ArrayStack { } public static void main(String[] args) { - ArrayStack arrayStack = new ArrayStack(5); + ArrayStack arrayStack = new ArrayStack(5); Scanner scan = new Scanner(System.in); while (true) { System.out.println("a存数, g取数, s查看, exit退出:"); diff --git a/src/dataANDcalc/java/stack/CalculatorByStack.java b/src/dataANDcalc/java/stack/CalculatorByStack.java index 5f0f932..fd6aa73 100644 --- a/src/dataANDcalc/java/stack/CalculatorByStack.java +++ b/src/dataANDcalc/java/stack/CalculatorByStack.java @@ -13,9 +13,9 @@ public class CalculatorByStack { private final static int DIV = 4; - private ArrayStack numStack = new ArrayStack(10); + private ArrayStack numStack = new ArrayStack(10); - private ArrayStack operStack = new ArrayStack(10); + private ArrayStack operStack = new ArrayStack(10); public void calculate(String expression) { int length = expression.length(); diff --git a/src/dataANDcalc/java/stack/ReversePoland.java b/src/dataANDcalc/java/stack/ReversePoland.java new file mode 100644 index 0000000..6cf4140 --- /dev/null +++ b/src/dataANDcalc/java/stack/ReversePoland.java @@ -0,0 +1,83 @@ +package stack; + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; +import java.util.Stack; +import java.util.regex.Pattern; + +public class ReversePoland { + + private ArrayStack numStack = new ArrayStack(10); + + private List expressList = new ArrayList<>(); + + public int calculate(String expression){ + translateExpress(expression); + int length = expressList.size(); + String operRegex = "[+\\-*/]"; + Pattern operPattern = Pattern.compile(operRegex); + for (int i = 0; i