From 30cfd63a652d8b0657f129f386d4f8074f6b8c23 Mon Sep 17 00:00:00 2001 From: liangjinglin Date: Tue, 14 Jan 2025 14:58:32 +0800 Subject: [PATCH] =?UTF-8?q?2025-01-14=201.=E4=BC=98=E5=8C=96=E6=A0=88?= =?UTF-8?q?=E7=B1=BB=EF=BC=88=E6=94=AF=E6=8C=81=E5=A4=9A=E7=A7=8D=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=EF=BC=89=202.=E9=80=86=E6=B3=A2=E5=85=B0=E8=A1=A8?= =?UTF-8?q?=E8=BE=BE=E5=BC=8F=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/dataANDcalc/java/stack/ArrayStack.java | 21 ++--- .../java/stack/CalculatorByStack.java | 4 +- src/dataANDcalc/java/stack/ReversePoland.java | 83 +++++++++++++++++++ 3 files changed, 96 insertions(+), 12 deletions(-) create mode 100644 src/dataANDcalc/java/stack/ReversePoland.java 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