From 1c5c20be5283ff69cec8066fd8e392702c07a824 Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Fri, 9 Jun 2023 17:44:51 +0900 Subject: [PATCH 01/26] =?UTF-8?q?feat:=20=EC=82=AC=EC=B9=99=EC=97=B0?= =?UTF-8?q?=EC=82=B0=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/example/CalOrder.java | 6 ++ .../src/main/java/org/example/Calculate.java | 64 +++++++++++++++++++ .../src/main/java/org/example/Main.java | 35 ++++++++++ 3 files changed, 105 insertions(+) create mode 100644 calculator/src/main/java/org/example/CalOrder.java create mode 100644 calculator/src/main/java/org/example/Calculate.java create mode 100644 calculator/src/main/java/org/example/Main.java diff --git a/calculator/src/main/java/org/example/CalOrder.java b/calculator/src/main/java/org/example/CalOrder.java new file mode 100644 index 000000000..4f6b41088 --- /dev/null +++ b/calculator/src/main/java/org/example/CalOrder.java @@ -0,0 +1,6 @@ +package org.example; + +public interface CalOrder { + public abstract void calPriorityFirst(); + public abstract void calPrioritySecond(); +} diff --git a/calculator/src/main/java/org/example/Calculate.java b/calculator/src/main/java/org/example/Calculate.java new file mode 100644 index 000000000..3e3de9dcd --- /dev/null +++ b/calculator/src/main/java/org/example/Calculate.java @@ -0,0 +1,64 @@ +package org.example; + +import java.util.Stack; + +public class Calculate implements CalOrder{ + private String expression; + Stack expressionStack = new Stack<>(); + int result = 0; + + public Calculate(String expression) { + this.expression = expression; + String[] expressionArr = expression.split(" "); + for (String inputVal : expressionArr) { + expressionStack.add(inputVal); + } + } + + public void calculate(){ + calPriorityFirst(); + calPrioritySecond(); + } + + @Override + public void calPriorityFirst() { + for (int i = 1; i < expressionStack.size(); i+=2) { + if (expressionStack.get(i).equals("*")) { + multiply(i); + i -= 2; + } else if (expressionStack.get(i).equals("/")) { + divide(i); + i -= 2; + } + } + } + + @Override + public void calPrioritySecond() { + result = Integer.parseInt(expressionStack.get(0)); + for (int i = 1; i < expressionStack.size(); i += 2) { + if (expressionStack.get(i).equals("+")) { + result += Integer.parseInt(expressionStack.get(i + 1)); + } else { + result -= Integer.parseInt(expressionStack.get(i + 1)); + } + } + System.out.println(result); + } + + public void multiply(int idx){ + result = Integer.parseInt(expressionStack.get(idx - 1)) * Integer.parseInt(expressionStack.get(idx + 1)); + expressionStack.add(idx - 1, String.valueOf(result)); + expressionStack.remove(idx); + expressionStack.remove(idx); + expressionStack.remove(idx); + } + + public void divide(int idx) { + result = Integer.parseInt(expressionStack.get(idx - 1)) / Integer.parseInt(expressionStack.get(idx + 1)); + expressionStack.add(idx - 1, String.valueOf(result)); + expressionStack.remove(idx); + expressionStack.remove(idx); + expressionStack.remove(idx); + } +} diff --git a/calculator/src/main/java/org/example/Main.java b/calculator/src/main/java/org/example/Main.java new file mode 100644 index 000000000..6ef07c00c --- /dev/null +++ b/calculator/src/main/java/org/example/Main.java @@ -0,0 +1,35 @@ +package org.example; + +import java.util.Scanner; + +public class Main { + public static void main(String[] args) { + + int choice = 0; + + while (true) { + choice = getChoice(); + System.out.println(); + if (choice == 1) { + + } else { + String expression = typeExpression(); + new Calculate(expression).calculate(); + } + System.out.println(); + } + } + + public static int getChoice() { + Scanner scanner = new Scanner(System.in); + + System.out.println("1. 조회\n2. 계산\n"); + System.out.print("선택 : "); + return scanner.nextInt(); + } + + public static String typeExpression() { + Scanner scanner = new Scanner(System.in); + return scanner.nextLine(); + } +} From 31d64fe1824c1948062ab89851b159bfa5eabe12 Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Fri, 9 Jun 2023 18:26:23 +0900 Subject: [PATCH 02/26] =?UTF-8?q?feat:=20=EC=A0=80=EC=9E=A5=EC=86=8C=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/example/Calculate.java | 2 ++ .../java/org/example/ExpressionRepository.java | 18 ++++++++++++++++++ .../src/main/java/org/example/Repository.java | 8 ++++++++ 3 files changed, 28 insertions(+) create mode 100644 calculator/src/main/java/org/example/ExpressionRepository.java create mode 100644 calculator/src/main/java/org/example/Repository.java diff --git a/calculator/src/main/java/org/example/Calculate.java b/calculator/src/main/java/org/example/Calculate.java index 3e3de9dcd..44104bb16 100644 --- a/calculator/src/main/java/org/example/Calculate.java +++ b/calculator/src/main/java/org/example/Calculate.java @@ -5,6 +5,7 @@ public class Calculate implements CalOrder{ private String expression; Stack expressionStack = new Stack<>(); + ExpressionRepository repository = new ExpressionRepository(); int result = 0; public Calculate(String expression) { @@ -44,6 +45,7 @@ public void calPrioritySecond() { } } System.out.println(result); + repository.save(expression,result); } public void multiply(int idx){ diff --git a/calculator/src/main/java/org/example/ExpressionRepository.java b/calculator/src/main/java/org/example/ExpressionRepository.java new file mode 100644 index 000000000..b82fc3eea --- /dev/null +++ b/calculator/src/main/java/org/example/ExpressionRepository.java @@ -0,0 +1,18 @@ +package org.example; + +import java.util.ArrayList; +import java.util.List; + +public class ExpressionRepository implements Repository { + private static List store = new ArrayList<>(); + + @Override + public void save(String expression, int result) { + store.add(expression + " = " + result); + } + + @Override + public List getRecord() { + return store; + } +} diff --git a/calculator/src/main/java/org/example/Repository.java b/calculator/src/main/java/org/example/Repository.java new file mode 100644 index 000000000..3f5ae7452 --- /dev/null +++ b/calculator/src/main/java/org/example/Repository.java @@ -0,0 +1,8 @@ +package org.example; + +import java.util.List; + +public interface Repository { + void save(String expression, int result); + List getRecord(); +} From d42a6d9f971a8f76e2a931f5f61329b89f03e048 Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Fri, 9 Jun 2023 18:26:35 +0900 Subject: [PATCH 03/26] =?UTF-8?q?feat:=20=EC=A1=B0=ED=9A=8C=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- calculator/src/main/java/org/example/Main.java | 3 ++- .../src/main/java/org/example/UserInterface.java | 5 +++++ .../main/java/org/example/UserInterfaceImpl.java | 13 +++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 calculator/src/main/java/org/example/UserInterface.java create mode 100644 calculator/src/main/java/org/example/UserInterfaceImpl.java diff --git a/calculator/src/main/java/org/example/Main.java b/calculator/src/main/java/org/example/Main.java index 6ef07c00c..be8662d19 100644 --- a/calculator/src/main/java/org/example/Main.java +++ b/calculator/src/main/java/org/example/Main.java @@ -1,5 +1,6 @@ package org.example; +import java.util.List; import java.util.Scanner; public class Main { @@ -11,7 +12,7 @@ public static void main(String[] args) { choice = getChoice(); System.out.println(); if (choice == 1) { - + new UserInterfaceImpl().showRecord(); } else { String expression = typeExpression(); new Calculate(expression).calculate(); diff --git a/calculator/src/main/java/org/example/UserInterface.java b/calculator/src/main/java/org/example/UserInterface.java new file mode 100644 index 000000000..5cac59152 --- /dev/null +++ b/calculator/src/main/java/org/example/UserInterface.java @@ -0,0 +1,5 @@ +package org.example; + +public interface UserInterface { + public abstract void showRecord(); +} diff --git a/calculator/src/main/java/org/example/UserInterfaceImpl.java b/calculator/src/main/java/org/example/UserInterfaceImpl.java new file mode 100644 index 000000000..39d2c79d3 --- /dev/null +++ b/calculator/src/main/java/org/example/UserInterfaceImpl.java @@ -0,0 +1,13 @@ +package org.example; + +import java.util.List; + +public class UserInterfaceImpl implements UserInterface{ + + ExpressionRepository repository = new ExpressionRepository(); + @Override + public void showRecord() { + List record = repository.getRecord(); + record.forEach(System.out::println); + } +} From b36e92742ea7a2b04a639bf1689d7ba9bcbd331b Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Wed, 14 Jun 2023 08:34:03 +0900 Subject: [PATCH 04/26] =?UTF-8?q?style:=20Interface=20=EB=A9=94=EC=84=9C?= =?UTF-8?q?=EB=93=9C=20=EC=A0=9C=EC=96=B4=EC=9E=90=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- calculator/src/main/java/org/example/CalOrder.java | 5 +++-- calculator/src/main/java/org/example/UserInterface.java | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/calculator/src/main/java/org/example/CalOrder.java b/calculator/src/main/java/org/example/CalOrder.java index 4f6b41088..6de698765 100644 --- a/calculator/src/main/java/org/example/CalOrder.java +++ b/calculator/src/main/java/org/example/CalOrder.java @@ -1,6 +1,7 @@ package org.example; public interface CalOrder { - public abstract void calPriorityFirst(); - public abstract void calPrioritySecond(); + void calPriorityFirst(); + void calPrioritySecond(); + } diff --git a/calculator/src/main/java/org/example/UserInterface.java b/calculator/src/main/java/org/example/UserInterface.java index 5cac59152..7fd0ba2a6 100644 --- a/calculator/src/main/java/org/example/UserInterface.java +++ b/calculator/src/main/java/org/example/UserInterface.java @@ -1,5 +1,5 @@ package org.example; public interface UserInterface { - public abstract void showRecord(); + void showRecord(); } From c0c1a075cb9de95a6f23872e653fe1f740288f21 Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Wed, 14 Jun 2023 09:04:19 +0900 Subject: [PATCH 05/26] =?UTF-8?q?refactor:=20=EB=A9=94=EB=89=B4=20?= =?UTF-8?q?=EC=B6=9C=EB=A0=A5=20=EA=B8=B0=EB=8A=A5=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/example/Main.java | 22 +++++++------------ .../main/java/org/example/Output/Show.java | 5 +++++ .../java/org/example/Output/ShowText.java | 9 ++++++++ 3 files changed, 22 insertions(+), 14 deletions(-) create mode 100644 calculator/src/main/java/org/example/Output/Show.java create mode 100644 calculator/src/main/java/org/example/Output/ShowText.java diff --git a/calculator/src/main/java/org/example/Main.java b/calculator/src/main/java/org/example/Main.java index be8662d19..237d2cc29 100644 --- a/calculator/src/main/java/org/example/Main.java +++ b/calculator/src/main/java/org/example/Main.java @@ -4,33 +4,27 @@ import java.util.Scanner; public class Main { + private static int choice; public static void main(String[] args) { - int choice = 0; + UserInterface userInterface = new UserInterfaceImpl(); + Type type = new UserType(); + CalOrder calculator = new Calculate(); while (true) { choice = getChoice(); System.out.println(); if (choice == 1) { - new UserInterfaceImpl().showRecord(); + userInterface.showRecord(); } else { - String expression = typeExpression(); - new Calculate(expression).calculate(); + String expression = type.typeExpression(); + calculator.getExpression(expression); + calculator.calculate(); } System.out.println(); } } - public static int getChoice() { - Scanner scanner = new Scanner(System.in); - System.out.println("1. 조회\n2. 계산\n"); System.out.print("선택 : "); - return scanner.nextInt(); - } - - public static String typeExpression() { - Scanner scanner = new Scanner(System.in); - return scanner.nextLine(); - } } diff --git a/calculator/src/main/java/org/example/Output/Show.java b/calculator/src/main/java/org/example/Output/Show.java new file mode 100644 index 000000000..27b01af35 --- /dev/null +++ b/calculator/src/main/java/org/example/Output/Show.java @@ -0,0 +1,5 @@ +package org.example.Output; + +public interface Show { + void showMenu(); +} diff --git a/calculator/src/main/java/org/example/Output/ShowText.java b/calculator/src/main/java/org/example/Output/ShowText.java new file mode 100644 index 000000000..e7d036f68 --- /dev/null +++ b/calculator/src/main/java/org/example/Output/ShowText.java @@ -0,0 +1,9 @@ +package org.example.Output; + +public class ShowText implements Show{ + @Override + public void showMenu() { + System.out.println("1. 조회\n2. 계산\n"); + System.out.print("선택 : "); + } +} From 14789d6cf120e8cd21c10bb44386759383b0f502 Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Wed, 14 Jun 2023 09:07:11 +0900 Subject: [PATCH 06/26] =?UTF-8?q?refactor:=20=EC=9E=85=EB=A0=A5=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/example/Input/Type.java | 6 ++++++ .../main/java/org/example/Input/UserType.java | 17 +++++++++++++++++ calculator/src/main/java/org/example/Main.java | 13 ++++++++----- 3 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 calculator/src/main/java/org/example/Input/Type.java create mode 100644 calculator/src/main/java/org/example/Input/UserType.java diff --git a/calculator/src/main/java/org/example/Input/Type.java b/calculator/src/main/java/org/example/Input/Type.java new file mode 100644 index 000000000..2573caba2 --- /dev/null +++ b/calculator/src/main/java/org/example/Input/Type.java @@ -0,0 +1,6 @@ +package org.example.Input; + +public interface Type { + int typeChoice(); + String typeExpression(); +} diff --git a/calculator/src/main/java/org/example/Input/UserType.java b/calculator/src/main/java/org/example/Input/UserType.java new file mode 100644 index 000000000..774a83326 --- /dev/null +++ b/calculator/src/main/java/org/example/Input/UserType.java @@ -0,0 +1,17 @@ +package org.example.Input; + +import java.util.Scanner; + +public class UserType implements Type{ + Scanner scanner = new Scanner(System.in); + @Override + public int typeChoice() { + return scanner.nextInt(); + } + + @Override + public String typeExpression() { + scanner.nextLine(); + return scanner.nextLine(); + } +} diff --git a/calculator/src/main/java/org/example/Main.java b/calculator/src/main/java/org/example/Main.java index 237d2cc29..836f7c172 100644 --- a/calculator/src/main/java/org/example/Main.java +++ b/calculator/src/main/java/org/example/Main.java @@ -1,18 +1,24 @@ package org.example; +import org.example.Input.Type; +import org.example.Input.UserType; +import org.example.Output.Show; +import org.example.Output.ShowText; + import java.util.List; import java.util.Scanner; public class Main { private static int choice; public static void main(String[] args) { - UserInterface userInterface = new UserInterfaceImpl(); Type type = new UserType(); CalOrder calculator = new Calculate(); + Show show = new ShowText(); while (true) { - choice = getChoice(); + show.showMenu(); + choice = type.typeChoice(); System.out.println(); if (choice == 1) { userInterface.showRecord(); @@ -24,7 +30,4 @@ public static void main(String[] args) { System.out.println(); } } - - System.out.println("1. 조회\n2. 계산\n"); - System.out.print("선택 : "); } From ef5eecab84f0f60dc67090ab3200cd5fdaf9ac35 Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Wed, 14 Jun 2023 09:24:56 +0900 Subject: [PATCH 07/26] style: Record -> Records --- .../src/main/java/org/example/ExpressionRepository.java | 2 +- calculator/src/main/java/org/example/Main.java | 2 +- calculator/src/main/java/org/example/Repository.java | 2 +- calculator/src/main/java/org/example/UserInterface.java | 2 +- calculator/src/main/java/org/example/UserInterfaceImpl.java | 6 +++--- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/calculator/src/main/java/org/example/ExpressionRepository.java b/calculator/src/main/java/org/example/ExpressionRepository.java index b82fc3eea..fdb622be9 100644 --- a/calculator/src/main/java/org/example/ExpressionRepository.java +++ b/calculator/src/main/java/org/example/ExpressionRepository.java @@ -12,7 +12,7 @@ public void save(String expression, int result) { } @Override - public List getRecord() { + public List getRecords() { return store; } } diff --git a/calculator/src/main/java/org/example/Main.java b/calculator/src/main/java/org/example/Main.java index 836f7c172..94ae4b30f 100644 --- a/calculator/src/main/java/org/example/Main.java +++ b/calculator/src/main/java/org/example/Main.java @@ -21,7 +21,7 @@ public static void main(String[] args) { choice = type.typeChoice(); System.out.println(); if (choice == 1) { - userInterface.showRecord(); + userInterface.showRecords(); } else { String expression = type.typeExpression(); calculator.getExpression(expression); diff --git a/calculator/src/main/java/org/example/Repository.java b/calculator/src/main/java/org/example/Repository.java index 3f5ae7452..88bc7f783 100644 --- a/calculator/src/main/java/org/example/Repository.java +++ b/calculator/src/main/java/org/example/Repository.java @@ -4,5 +4,5 @@ public interface Repository { void save(String expression, int result); - List getRecord(); + List getRecords(); } diff --git a/calculator/src/main/java/org/example/UserInterface.java b/calculator/src/main/java/org/example/UserInterface.java index 7fd0ba2a6..eb1d14234 100644 --- a/calculator/src/main/java/org/example/UserInterface.java +++ b/calculator/src/main/java/org/example/UserInterface.java @@ -1,5 +1,5 @@ package org.example; public interface UserInterface { - void showRecord(); + void showRecords(); } diff --git a/calculator/src/main/java/org/example/UserInterfaceImpl.java b/calculator/src/main/java/org/example/UserInterfaceImpl.java index 39d2c79d3..6c4c777d2 100644 --- a/calculator/src/main/java/org/example/UserInterfaceImpl.java +++ b/calculator/src/main/java/org/example/UserInterfaceImpl.java @@ -4,10 +4,10 @@ public class UserInterfaceImpl implements UserInterface{ - ExpressionRepository repository = new ExpressionRepository(); + Repository repository = new ExpressionRepository(); @Override - public void showRecord() { - List record = repository.getRecord(); + public void showRecords() { + List record = repository.getRecords(); record.forEach(System.out::println); } } From 1bd816a762507366402565bfb4b812ca1322ace0 Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Wed, 14 Jun 2023 09:30:45 +0900 Subject: [PATCH 08/26] =?UTF-8?q?refactor:=20=EC=B6=9C=EB=A0=A5=ED=95=A0?= =?UTF-8?q?=20=EA=B2=B0=EA=B3=BC=EB=93=A4=EC=9D=84=20=EA=B0=80=EC=A0=B8?= =?UTF-8?q?=EC=98=A4=EB=8A=94=20=EA=B8=B0=EB=8A=A5=EA=B3=BC=20=EB=B3=B4?= =?UTF-8?q?=EC=97=AC=EC=A3=BC=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- calculator/src/main/java/org/example/Main.java | 4 +++- calculator/src/main/java/org/example/UserInterface.java | 4 +++- calculator/src/main/java/org/example/UserInterfaceImpl.java | 5 ++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/calculator/src/main/java/org/example/Main.java b/calculator/src/main/java/org/example/Main.java index 94ae4b30f..3341fb6e3 100644 --- a/calculator/src/main/java/org/example/Main.java +++ b/calculator/src/main/java/org/example/Main.java @@ -12,6 +12,7 @@ public class Main { private static int choice; public static void main(String[] args) { UserInterface userInterface = new UserInterfaceImpl(); + Repository repository = new ExpressionRepository(); Type type = new UserType(); CalOrder calculator = new Calculate(); Show show = new ShowText(); @@ -21,7 +22,8 @@ public static void main(String[] args) { choice = type.typeChoice(); System.out.println(); if (choice == 1) { - userInterface.showRecords(); + List records = repository.getRecords(); + userInterface.showRecords(records); } else { String expression = type.typeExpression(); calculator.getExpression(expression); diff --git a/calculator/src/main/java/org/example/UserInterface.java b/calculator/src/main/java/org/example/UserInterface.java index eb1d14234..a3910a0ca 100644 --- a/calculator/src/main/java/org/example/UserInterface.java +++ b/calculator/src/main/java/org/example/UserInterface.java @@ -1,5 +1,7 @@ package org.example; +import java.util.List; + public interface UserInterface { - void showRecords(); + void showRecords(List records); } diff --git a/calculator/src/main/java/org/example/UserInterfaceImpl.java b/calculator/src/main/java/org/example/UserInterfaceImpl.java index 6c4c777d2..2cea9a06e 100644 --- a/calculator/src/main/java/org/example/UserInterfaceImpl.java +++ b/calculator/src/main/java/org/example/UserInterfaceImpl.java @@ -6,8 +6,7 @@ public class UserInterfaceImpl implements UserInterface{ Repository repository = new ExpressionRepository(); @Override - public void showRecords() { - List record = repository.getRecords(); - record.forEach(System.out::println); + public void showRecords(List records) { + records.forEach(System.out::println); } } From 2b756834ba16209bb86b0739e4ca937c5c652acf Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Wed, 14 Jun 2023 11:27:39 +0900 Subject: [PATCH 09/26] =?UTF-8?q?refactor:=20Output=20=ED=8C=A8=ED=82=A4?= =?UTF-8?q?=EC=A7=80=EC=9D=98=20Show=EC=9D=B8=ED=84=B0=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=8A=A4=20=ED=8C=8C=EC=9D=BC=EB=A1=9C=20=ED=95=A9=EC=B9=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/example/UserInterface.java | 7 ------- .../src/main/java/org/example/UserInterfaceImpl.java | 12 ------------ 2 files changed, 19 deletions(-) delete mode 100644 calculator/src/main/java/org/example/UserInterface.java delete mode 100644 calculator/src/main/java/org/example/UserInterfaceImpl.java diff --git a/calculator/src/main/java/org/example/UserInterface.java b/calculator/src/main/java/org/example/UserInterface.java deleted file mode 100644 index a3910a0ca..000000000 --- a/calculator/src/main/java/org/example/UserInterface.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.example; - -import java.util.List; - -public interface UserInterface { - void showRecords(List records); -} diff --git a/calculator/src/main/java/org/example/UserInterfaceImpl.java b/calculator/src/main/java/org/example/UserInterfaceImpl.java deleted file mode 100644 index 2cea9a06e..000000000 --- a/calculator/src/main/java/org/example/UserInterfaceImpl.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.example; - -import java.util.List; - -public class UserInterfaceImpl implements UserInterface{ - - Repository repository = new ExpressionRepository(); - @Override - public void showRecords(List records) { - records.forEach(System.out::println); - } -} From 8e7fc67281e7f331197a60b8d1b91979fb3e67bf Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Wed, 14 Jun 2023 11:29:35 +0900 Subject: [PATCH 10/26] =?UTF-8?q?refactor:=20=EA=B8=B0=EB=8A=A5=EB=B3=84?= =?UTF-8?q?=20=ED=8C=A8=ED=82=A4=EC=A7=80=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- calculator/src/main/java/org/example/Input/Input.java | 6 ++++++ calculator/src/main/java/org/example/Input/Type.java | 6 ------ .../org/example/Input/{UserType.java => UserInput.java} | 6 +++--- .../org/example/{ => Repository}/ExpressionRepository.java | 2 +- .../main/java/org/example/{ => Repository}/Repository.java | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) create mode 100644 calculator/src/main/java/org/example/Input/Input.java delete mode 100644 calculator/src/main/java/org/example/Input/Type.java rename calculator/src/main/java/org/example/Input/{UserType.java => UserInput.java} (68%) rename calculator/src/main/java/org/example/{ => Repository}/ExpressionRepository.java (92%) rename calculator/src/main/java/org/example/{ => Repository}/Repository.java (80%) diff --git a/calculator/src/main/java/org/example/Input/Input.java b/calculator/src/main/java/org/example/Input/Input.java new file mode 100644 index 000000000..8717d8829 --- /dev/null +++ b/calculator/src/main/java/org/example/Input/Input.java @@ -0,0 +1,6 @@ +package org.example.Input; + +public interface Input { + int inputChoice(); + String inputExpression(); +} diff --git a/calculator/src/main/java/org/example/Input/Type.java b/calculator/src/main/java/org/example/Input/Type.java deleted file mode 100644 index 2573caba2..000000000 --- a/calculator/src/main/java/org/example/Input/Type.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.example.Input; - -public interface Type { - int typeChoice(); - String typeExpression(); -} diff --git a/calculator/src/main/java/org/example/Input/UserType.java b/calculator/src/main/java/org/example/Input/UserInput.java similarity index 68% rename from calculator/src/main/java/org/example/Input/UserType.java rename to calculator/src/main/java/org/example/Input/UserInput.java index 774a83326..b88bc55fe 100644 --- a/calculator/src/main/java/org/example/Input/UserType.java +++ b/calculator/src/main/java/org/example/Input/UserInput.java @@ -2,15 +2,15 @@ import java.util.Scanner; -public class UserType implements Type{ +public class UserInput implements Input { Scanner scanner = new Scanner(System.in); @Override - public int typeChoice() { + public int inputChoice() { return scanner.nextInt(); } @Override - public String typeExpression() { + public String inputExpression() { scanner.nextLine(); return scanner.nextLine(); } diff --git a/calculator/src/main/java/org/example/ExpressionRepository.java b/calculator/src/main/java/org/example/Repository/ExpressionRepository.java similarity index 92% rename from calculator/src/main/java/org/example/ExpressionRepository.java rename to calculator/src/main/java/org/example/Repository/ExpressionRepository.java index fdb622be9..b54544f64 100644 --- a/calculator/src/main/java/org/example/ExpressionRepository.java +++ b/calculator/src/main/java/org/example/Repository/ExpressionRepository.java @@ -1,4 +1,4 @@ -package org.example; +package org.example.Repository; import java.util.ArrayList; import java.util.List; diff --git a/calculator/src/main/java/org/example/Repository.java b/calculator/src/main/java/org/example/Repository/Repository.java similarity index 80% rename from calculator/src/main/java/org/example/Repository.java rename to calculator/src/main/java/org/example/Repository/Repository.java index 88bc7f783..3ae48bbec 100644 --- a/calculator/src/main/java/org/example/Repository.java +++ b/calculator/src/main/java/org/example/Repository/Repository.java @@ -1,4 +1,4 @@ -package org.example; +package org.example.Repository; import java.util.List; From 23244183cb898f8986a458c96a9f98ab7a8dc6cd Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Wed, 14 Jun 2023 11:41:03 +0900 Subject: [PATCH 11/26] =?UTF-8?q?refactor:=20type=EB=B3=B4=EB=8B=A4=20inpu?= =?UTF-8?q?t=EC=9D=B4=20=EB=8D=94=20=EB=AA=85=ED=99=95=ED=95=9C=EA=B2=83?= =?UTF-8?q?=20=EA=B0=99=EC=95=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- calculator/src/main/java/org/example/Main.java | 16 ++++++++-------- .../src/main/java/org/example/Output/Show.java | 3 +++ .../main/java/org/example/Output/ShowText.java | 7 +++++++ 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/calculator/src/main/java/org/example/Main.java b/calculator/src/main/java/org/example/Main.java index 3341fb6e3..ec795bf64 100644 --- a/calculator/src/main/java/org/example/Main.java +++ b/calculator/src/main/java/org/example/Main.java @@ -1,31 +1,31 @@ package org.example; -import org.example.Input.Type; -import org.example.Input.UserType; +import org.example.Input.Input; +import org.example.Input.UserInput; import org.example.Output.Show; import org.example.Output.ShowText; +import org.example.Repository.ExpressionRepository; +import org.example.Repository.Repository; import java.util.List; -import java.util.Scanner; public class Main { private static int choice; public static void main(String[] args) { - UserInterface userInterface = new UserInterfaceImpl(); Repository repository = new ExpressionRepository(); - Type type = new UserType(); + Input input = new UserInput(); CalOrder calculator = new Calculate(); Show show = new ShowText(); while (true) { show.showMenu(); - choice = type.typeChoice(); + choice = input.inputChoice(); System.out.println(); if (choice == 1) { List records = repository.getRecords(); - userInterface.showRecords(records); + show.showRecords(records); } else { - String expression = type.typeExpression(); + String expression = input.inputExpression(); calculator.getExpression(expression); calculator.calculate(); } diff --git a/calculator/src/main/java/org/example/Output/Show.java b/calculator/src/main/java/org/example/Output/Show.java index 27b01af35..73b9e6aaa 100644 --- a/calculator/src/main/java/org/example/Output/Show.java +++ b/calculator/src/main/java/org/example/Output/Show.java @@ -1,5 +1,8 @@ package org.example.Output; +import java.util.List; + public interface Show { void showMenu(); + void showRecords(List records); } diff --git a/calculator/src/main/java/org/example/Output/ShowText.java b/calculator/src/main/java/org/example/Output/ShowText.java index e7d036f68..d91b93702 100644 --- a/calculator/src/main/java/org/example/Output/ShowText.java +++ b/calculator/src/main/java/org/example/Output/ShowText.java @@ -1,9 +1,16 @@ package org.example.Output; +import java.util.List; + public class ShowText implements Show{ @Override public void showMenu() { System.out.println("1. 조회\n2. 계산\n"); System.out.print("선택 : "); } + + @Override + public void showRecords(List records) { + records.forEach(System.out::println); + } } From 71917d05acc96dadbf7e5d6f76748e8bbfed9236 Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Wed, 14 Jun 2023 14:41:48 +0900 Subject: [PATCH 12/26] =?UTF-8?q?refactor:=20=EA=B2=B0=EA=B3=BC=20?= =?UTF-8?q?=EC=B6=9C=EB=A0=A5=20=EA=B8=B0=EB=8A=A5=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- calculator/src/main/java/org/example/Output/Show.java | 1 + calculator/src/main/java/org/example/Output/ShowText.java | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/calculator/src/main/java/org/example/Output/Show.java b/calculator/src/main/java/org/example/Output/Show.java index 73b9e6aaa..d8bfb4d6e 100644 --- a/calculator/src/main/java/org/example/Output/Show.java +++ b/calculator/src/main/java/org/example/Output/Show.java @@ -5,4 +5,5 @@ public interface Show { void showMenu(); void showRecords(List records); + void showResult(int result); } diff --git a/calculator/src/main/java/org/example/Output/ShowText.java b/calculator/src/main/java/org/example/Output/ShowText.java index d91b93702..9a4d2cb8c 100644 --- a/calculator/src/main/java/org/example/Output/ShowText.java +++ b/calculator/src/main/java/org/example/Output/ShowText.java @@ -13,4 +13,9 @@ public void showMenu() { public void showRecords(List records) { records.forEach(System.out::println); } + + @Override + public void showResult(int result) { + System.out.println(result); + } } From 15ffedab8ea5a665da126611b88c50a77e53b355 Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Wed, 14 Jun 2023 14:43:45 +0900 Subject: [PATCH 13/26] =?UTF-8?q?refactor:=20=EC=9E=85=EB=A0=A5=EB=B0=9B?= =?UTF-8?q?=EC=9D=80=20=EC=8B=9D=20=EC=A0=84=EC=B2=98=EB=A6=AC=20=EC=9E=91?= =?UTF-8?q?=EC=97=85=20=EA=B8=B0=EB=8A=A5=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/example/Calculate/PreProcess.java | 7 +++++++ .../org/example/Calculate/PreProcessImpl.java | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 calculator/src/main/java/org/example/Calculate/PreProcess.java create mode 100644 calculator/src/main/java/org/example/Calculate/PreProcessImpl.java diff --git a/calculator/src/main/java/org/example/Calculate/PreProcess.java b/calculator/src/main/java/org/example/Calculate/PreProcess.java new file mode 100644 index 000000000..8448f0d86 --- /dev/null +++ b/calculator/src/main/java/org/example/Calculate/PreProcess.java @@ -0,0 +1,7 @@ +package org.example.Calculate; + +import java.util.Stack; + +public interface PreProcess { + Stack expressionToStack(String expression); +} diff --git a/calculator/src/main/java/org/example/Calculate/PreProcessImpl.java b/calculator/src/main/java/org/example/Calculate/PreProcessImpl.java new file mode 100644 index 000000000..cd53b4dc8 --- /dev/null +++ b/calculator/src/main/java/org/example/Calculate/PreProcessImpl.java @@ -0,0 +1,18 @@ +package org.example.Calculate; + +import java.util.Stack; + +public class PreProcessImpl implements PreProcess{ + private String expression; + Stack expressionStack = new Stack<>(); + @Override + public Stack expressionToStack(String expression) { + this.expression = expression; + String[] expressionArr = expression.split(" "); + expressionStack.clear(); + for (String inputVal : expressionArr) { + expressionStack.add(inputVal); + } + return expressionStack; + } +} From 50b581d481794c92e552908102b39ecb2109769b Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Wed, 14 Jun 2023 14:51:01 +0900 Subject: [PATCH 14/26] =?UTF-8?q?refactor:=20=EC=82=AC=EC=B9=99=EC=97=B0?= =?UTF-8?q?=EC=82=B0=EC=9D=98=20=EA=B8=B0=EB=8A=A5=EB=A7=8C=20=EC=88=98?= =?UTF-8?q?=ED=96=89=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/example/CalOrder.java | 7 ---- .../java/org/example/Calculate/CalOrder.java | 9 +++++ .../CalOrderImpl.java} | 37 +++++++------------ 3 files changed, 22 insertions(+), 31 deletions(-) delete mode 100644 calculator/src/main/java/org/example/CalOrder.java create mode 100644 calculator/src/main/java/org/example/Calculate/CalOrder.java rename calculator/src/main/java/org/example/{Calculate.java => Calculate/CalOrderImpl.java} (64%) diff --git a/calculator/src/main/java/org/example/CalOrder.java b/calculator/src/main/java/org/example/CalOrder.java deleted file mode 100644 index 6de698765..000000000 --- a/calculator/src/main/java/org/example/CalOrder.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.example; - -public interface CalOrder { - void calPriorityFirst(); - void calPrioritySecond(); - -} diff --git a/calculator/src/main/java/org/example/Calculate/CalOrder.java b/calculator/src/main/java/org/example/Calculate/CalOrder.java new file mode 100644 index 000000000..ff913ce14 --- /dev/null +++ b/calculator/src/main/java/org/example/Calculate/CalOrder.java @@ -0,0 +1,9 @@ +package org.example.Calculate; + +import java.util.Stack; + +public interface CalOrder { + void calMultiplyDivide(); + int calPlusMinus(); + void setStack(Stack expressionStack); +} diff --git a/calculator/src/main/java/org/example/Calculate.java b/calculator/src/main/java/org/example/Calculate/CalOrderImpl.java similarity index 64% rename from calculator/src/main/java/org/example/Calculate.java rename to calculator/src/main/java/org/example/Calculate/CalOrderImpl.java index 44104bb16..061231973 100644 --- a/calculator/src/main/java/org/example/Calculate.java +++ b/calculator/src/main/java/org/example/Calculate/CalOrderImpl.java @@ -1,29 +1,14 @@ -package org.example; +package org.example.Calculate; import java.util.Stack; -public class Calculate implements CalOrder{ - private String expression; +public class CalOrderImpl implements CalOrder { + private int result = 0; Stack expressionStack = new Stack<>(); - ExpressionRepository repository = new ExpressionRepository(); - int result = 0; - - public Calculate(String expression) { - this.expression = expression; - String[] expressionArr = expression.split(" "); - for (String inputVal : expressionArr) { - expressionStack.add(inputVal); - } - } - - public void calculate(){ - calPriorityFirst(); - calPrioritySecond(); - } @Override - public void calPriorityFirst() { - for (int i = 1; i < expressionStack.size(); i+=2) { + public void calMultiplyDivide() { + for (int i = 1; i < expressionStack.size(); i += 2) { if (expressionStack.get(i).equals("*")) { multiply(i); i -= 2; @@ -35,7 +20,7 @@ public void calPriorityFirst() { } @Override - public void calPrioritySecond() { + public int calPlusMinus() { result = Integer.parseInt(expressionStack.get(0)); for (int i = 1; i < expressionStack.size(); i += 2) { if (expressionStack.get(i).equals("+")) { @@ -44,11 +29,15 @@ public void calPrioritySecond() { result -= Integer.parseInt(expressionStack.get(i + 1)); } } - System.out.println(result); - repository.save(expression,result); + return result; + } + + @Override + public void setStack(Stack expressionStack) { + this.expressionStack = expressionStack; } - public void multiply(int idx){ + public void multiply(int idx) { result = Integer.parseInt(expressionStack.get(idx - 1)) * Integer.parseInt(expressionStack.get(idx + 1)); expressionStack.add(idx - 1, String.valueOf(result)); expressionStack.remove(idx); From d31597e7cd805ba8083501129397cae86b599d0e Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Wed, 14 Jun 2023 14:53:01 +0900 Subject: [PATCH 15/26] =?UTF-8?q?refactor:=20=EC=8B=9D=EC=9D=84=20?= =?UTF-8?q?=EC=9E=85=EB=A0=A5=EB=B0=9B=EA=B3=A0=20=EA=B2=B0=EA=B3=BC?= =?UTF-8?q?=EA=B0=92=EC=9D=84=20=EB=B0=98=ED=99=98=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=EB=A7=8C=20=EC=88=98=ED=96=89,=20=EB=82=98?= =?UTF-8?q?=EB=A8=B8=EC=A7=80=20=EA=B8=B0=EB=8A=A5=EC=9D=80=20=EB=82=B4?= =?UTF-8?q?=EB=B6=80=EC=A0=81=EC=9C=BC=EB=A1=9C=20=EA=B0=90=EC=B6=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/example/Calculate/Calculate.java | 7 +++++++ .../org/example/Calculate/CalculateImpl.java | 17 +++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 calculator/src/main/java/org/example/Calculate/Calculate.java create mode 100644 calculator/src/main/java/org/example/Calculate/CalculateImpl.java diff --git a/calculator/src/main/java/org/example/Calculate/Calculate.java b/calculator/src/main/java/org/example/Calculate/Calculate.java new file mode 100644 index 000000000..cd7c2359a --- /dev/null +++ b/calculator/src/main/java/org/example/Calculate/Calculate.java @@ -0,0 +1,7 @@ +package org.example.Calculate; + +import java.util.Stack; + +public interface Calculate { + int calculate(Stack expressionStack); +} diff --git a/calculator/src/main/java/org/example/Calculate/CalculateImpl.java b/calculator/src/main/java/org/example/Calculate/CalculateImpl.java new file mode 100644 index 000000000..845825f22 --- /dev/null +++ b/calculator/src/main/java/org/example/Calculate/CalculateImpl.java @@ -0,0 +1,17 @@ +package org.example.Calculate; + +import java.util.Stack; + +public class CalculateImpl implements Calculate { + CalOrder calOrder; + + public CalculateImpl(CalOrder calOrder) { + this.calOrder = calOrder; + } + + public int calculate(Stack expressionStack) { + calOrder.setStack(expressionStack); + calOrder.calMultiplyDivide(); + return calOrder.calPlusMinus(); + } +} From 057119ff7eb079299fca2c5f701d47c5d8f238b8 Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Wed, 14 Jun 2023 14:53:59 +0900 Subject: [PATCH 16/26] =?UTF-8?q?refactor:=20DI=EC=BB=A8=ED=85=8C=EC=9D=B4?= =?UTF-8?q?=EB=84=88=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/example/CalConfig.java | 27 +++++++++++++++++++ .../src/main/java/org/example/Main.java | 22 ++++++++------- 2 files changed, 40 insertions(+), 9 deletions(-) create mode 100644 calculator/src/main/java/org/example/CalConfig.java diff --git a/calculator/src/main/java/org/example/CalConfig.java b/calculator/src/main/java/org/example/CalConfig.java new file mode 100644 index 000000000..acc90653c --- /dev/null +++ b/calculator/src/main/java/org/example/CalConfig.java @@ -0,0 +1,27 @@ +package org.example; + +import org.example.Calculate.*; +import org.example.Input.Input; +import org.example.Input.UserInput; +import org.example.Output.Show; +import org.example.Output.ShowText; +import org.example.Repository.ExpressionRepository; +import org.example.Repository.Repository; + +public class CalConfig { + public Calculate calculate(){ + return new CalculateImpl(new CalOrderImpl()); + } + public Repository repository(){ + return new ExpressionRepository(); + } + public Input input(){ + return new UserInput(); + } + public Show show(){ + return new ShowText(); + } + public PreProcess preProcess() { + return new PreProcessImpl(); + } +} diff --git a/calculator/src/main/java/org/example/Main.java b/calculator/src/main/java/org/example/Main.java index ec795bf64..397f67eee 100644 --- a/calculator/src/main/java/org/example/Main.java +++ b/calculator/src/main/java/org/example/Main.java @@ -1,21 +1,23 @@ package org.example; +import org.example.Calculate.Calculate; +import org.example.Calculate.PreProcess; import org.example.Input.Input; -import org.example.Input.UserInput; import org.example.Output.Show; -import org.example.Output.ShowText; -import org.example.Repository.ExpressionRepository; import org.example.Repository.Repository; import java.util.List; +import java.util.Stack; public class Main { private static int choice; public static void main(String[] args) { - Repository repository = new ExpressionRepository(); - Input input = new UserInput(); - CalOrder calculator = new Calculate(); - Show show = new ShowText(); + CalConfig calConfig = new CalConfig(); + Calculate calculator = calConfig.calculate(); + Repository repository = calConfig.repository(); + Input input = calConfig.input(); + Show show = calConfig.show(); + PreProcess preProcess = calConfig.preProcess(); while (true) { show.showMenu(); @@ -26,8 +28,10 @@ public static void main(String[] args) { show.showRecords(records); } else { String expression = input.inputExpression(); - calculator.getExpression(expression); - calculator.calculate(); + Stack expressionStack = preProcess.expressionToStack(expression); + int result = calculator.calculate(expressionStack); + repository.save(expression,result); + show.showResult(result); } System.out.println(); } From 8e49f93bed259d07a65cf8a15c28d290b222bead Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Fri, 16 Jun 2023 22:19:03 +0900 Subject: [PATCH 17/26] =?UTF-8?q?style:=20=EB=AA=85=ED=99=95=ED=95=98?= =?UTF-8?q?=EA=B2=8C=20=EC=9D=B4=EB=A6=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/example/CalConfig.java | 4 ++-- .../main/java/org/example/Calculate/CalOrder.java | 4 ++-- .../java/org/example/Calculate/CalculateImpl.java | 4 ++-- .../src/main/java/org/example/Input/Input.java | 2 +- .../src/main/java/org/example/Input/UserInput.java | 2 +- .../Output/{ShowText.java => ShowingText.java} | 14 ++++++++++++-- 6 files changed, 20 insertions(+), 10 deletions(-) rename calculator/src/main/java/org/example/Output/{ShowText.java => ShowingText.java} (53%) diff --git a/calculator/src/main/java/org/example/CalConfig.java b/calculator/src/main/java/org/example/CalConfig.java index acc90653c..4cc45221b 100644 --- a/calculator/src/main/java/org/example/CalConfig.java +++ b/calculator/src/main/java/org/example/CalConfig.java @@ -4,7 +4,7 @@ import org.example.Input.Input; import org.example.Input.UserInput; import org.example.Output.Show; -import org.example.Output.ShowText; +import org.example.Output.ShowingText; import org.example.Repository.ExpressionRepository; import org.example.Repository.Repository; @@ -19,7 +19,7 @@ public Input input(){ return new UserInput(); } public Show show(){ - return new ShowText(); + return new ShowingText(); } public PreProcess preProcess() { return new PreProcessImpl(); diff --git a/calculator/src/main/java/org/example/Calculate/CalOrder.java b/calculator/src/main/java/org/example/Calculate/CalOrder.java index ff913ce14..6c8999cff 100644 --- a/calculator/src/main/java/org/example/Calculate/CalOrder.java +++ b/calculator/src/main/java/org/example/Calculate/CalOrder.java @@ -3,7 +3,7 @@ import java.util.Stack; public interface CalOrder { - void calMultiplyDivide(); - int calPlusMinus(); + String calculateMultiplyDivide(); + int calculatePlusMinus(); void setStack(Stack expressionStack); } diff --git a/calculator/src/main/java/org/example/Calculate/CalculateImpl.java b/calculator/src/main/java/org/example/Calculate/CalculateImpl.java index 845825f22..9b57f6aa7 100644 --- a/calculator/src/main/java/org/example/Calculate/CalculateImpl.java +++ b/calculator/src/main/java/org/example/Calculate/CalculateImpl.java @@ -11,7 +11,7 @@ public CalculateImpl(CalOrder calOrder) { public int calculate(Stack expressionStack) { calOrder.setStack(expressionStack); - calOrder.calMultiplyDivide(); - return calOrder.calPlusMinus(); + calOrder.calculateMultiplyDivide(); + return calOrder.calculatePlusMinus(); } } diff --git a/calculator/src/main/java/org/example/Input/Input.java b/calculator/src/main/java/org/example/Input/Input.java index 8717d8829..27dca82db 100644 --- a/calculator/src/main/java/org/example/Input/Input.java +++ b/calculator/src/main/java/org/example/Input/Input.java @@ -1,6 +1,6 @@ package org.example.Input; public interface Input { - int inputChoice(); + int inputNumber(); String inputExpression(); } diff --git a/calculator/src/main/java/org/example/Input/UserInput.java b/calculator/src/main/java/org/example/Input/UserInput.java index b88bc55fe..e655d104c 100644 --- a/calculator/src/main/java/org/example/Input/UserInput.java +++ b/calculator/src/main/java/org/example/Input/UserInput.java @@ -5,7 +5,7 @@ public class UserInput implements Input { Scanner scanner = new Scanner(System.in); @Override - public int inputChoice() { + public int inputNumber() { return scanner.nextInt(); } diff --git a/calculator/src/main/java/org/example/Output/ShowText.java b/calculator/src/main/java/org/example/Output/ShowingText.java similarity index 53% rename from calculator/src/main/java/org/example/Output/ShowText.java rename to calculator/src/main/java/org/example/Output/ShowingText.java index 9a4d2cb8c..83d898a6b 100644 --- a/calculator/src/main/java/org/example/Output/ShowText.java +++ b/calculator/src/main/java/org/example/Output/ShowingText.java @@ -2,10 +2,10 @@ import java.util.List; -public class ShowText implements Show{ +public class ShowingText implements Show { @Override public void showMenu() { - System.out.println("1. 조회\n2. 계산\n"); + System.out.println("1. 조회\n2. 계산\n3. 종료\n"); System.out.print("선택 : "); } @@ -18,4 +18,14 @@ public void showRecords(List records) { public void showResult(int result) { System.out.println(result); } + + @Override + public void lineBreak() { + System.out.println(); + } + + @Override + public void showInvalidInput() { + System.out.println("잘못된 값을 입력하였습니다."); + } } From 1429b490ef31557d2d0879d8b193b6b1d39f8965 Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Fri, 16 Jun 2023 22:25:11 +0900 Subject: [PATCH 18/26] =?UTF-8?q?refactor:=20=EA=B3=B5=ED=86=B5=EB=B6=80?= =?UTF-8?q?=EB=B6=90=20=EB=A9=94=EC=84=9C=EB=93=9C=20=EC=B6=94=EC=B6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/example/Calculate/CalOrderImpl.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/calculator/src/main/java/org/example/Calculate/CalOrderImpl.java b/calculator/src/main/java/org/example/Calculate/CalOrderImpl.java index 061231973..16023cd84 100644 --- a/calculator/src/main/java/org/example/Calculate/CalOrderImpl.java +++ b/calculator/src/main/java/org/example/Calculate/CalOrderImpl.java @@ -7,7 +7,7 @@ public class CalOrderImpl implements CalOrder { Stack expressionStack = new Stack<>(); @Override - public void calMultiplyDivide() { + public String calculateMultiplyDivide() { for (int i = 1; i < expressionStack.size(); i += 2) { if (expressionStack.get(i).equals("*")) { multiply(i); @@ -17,10 +17,11 @@ public void calMultiplyDivide() { i -= 2; } } + return expressionStack.toString(); } @Override - public int calPlusMinus() { + public int calculatePlusMinus() { result = Integer.parseInt(expressionStack.get(0)); for (int i = 1; i < expressionStack.size(); i += 2) { if (expressionStack.get(i).equals("+")) { @@ -37,16 +38,17 @@ public void setStack(Stack expressionStack) { this.expressionStack = expressionStack; } - public void multiply(int idx) { + private void multiply(int idx) { result = Integer.parseInt(expressionStack.get(idx - 1)) * Integer.parseInt(expressionStack.get(idx + 1)); - expressionStack.add(idx - 1, String.valueOf(result)); - expressionStack.remove(idx); - expressionStack.remove(idx); - expressionStack.remove(idx); + replaceNumOperatorNumWithResult(idx); } - public void divide(int idx) { + private void divide(int idx) { result = Integer.parseInt(expressionStack.get(idx - 1)) / Integer.parseInt(expressionStack.get(idx + 1)); + replaceNumOperatorNumWithResult(idx); + } + + private void replaceNumOperatorNumWithResult(int idx) { expressionStack.add(idx - 1, String.valueOf(result)); expressionStack.remove(idx); expressionStack.remove(idx); From 0f7a612665a54f256cd29ee0f1af0035f71998fc Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Fri, 16 Jun 2023 22:27:46 +0900 Subject: [PATCH 19/26] =?UTF-8?q?refactor:=20enum=EC=B6=94=EA=B0=80?= =?UTF-8?q?=ED=95=98=EC=97=AC=20=EA=B0=81=20=EB=A9=94=EB=89=B4=20=EC=84=A0?= =?UTF-8?q?=ED=83=9D=EC=9D=84=20=EB=AA=85=ED=99=95=ED=95=98=EA=B2=8C=20?= =?UTF-8?q?=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/example/Choice.java | 19 +++++++++++ .../src/main/java/org/example/Main.java | 34 ++++++++++++------- 2 files changed, 41 insertions(+), 12 deletions(-) create mode 100644 calculator/src/main/java/org/example/Choice.java diff --git a/calculator/src/main/java/org/example/Choice.java b/calculator/src/main/java/org/example/Choice.java new file mode 100644 index 000000000..6d36a8456 --- /dev/null +++ b/calculator/src/main/java/org/example/Choice.java @@ -0,0 +1,19 @@ +package org.example; + +public enum Choice { + HISTORY(1), CALCULATION(2), END(3),WRONGNUMBER(4); + + private final int inputValue; + private static final Choice[] CHOICES = Choice.values(); + + Choice(int inputValue) { + this.inputValue = inputValue; + } + + public static Choice of(int inputValue) { + if (inputValue < 1 || inputValue > 3) { + return CHOICES[3]; + } + return CHOICES[inputValue - 1]; + } +} diff --git a/calculator/src/main/java/org/example/Main.java b/calculator/src/main/java/org/example/Main.java index 397f67eee..8715b0d13 100644 --- a/calculator/src/main/java/org/example/Main.java +++ b/calculator/src/main/java/org/example/Main.java @@ -11,6 +11,7 @@ public class Main { private static int choice; + public static void main(String[] args) { CalConfig calConfig = new CalConfig(); Calculate calculator = calConfig.calculate(); @@ -21,19 +22,28 @@ public static void main(String[] args) { while (true) { show.showMenu(); - choice = input.inputChoice(); - System.out.println(); - if (choice == 1) { - List records = repository.getRecords(); - show.showRecords(records); - } else { - String expression = input.inputExpression(); - Stack expressionStack = preProcess.expressionToStack(expression); - int result = calculator.calculate(expressionStack); - repository.save(expression,result); - show.showResult(result); + choice = input.inputNumber(); + Choice menuChoice = Choice.of(choice); + show.lineBreak(); + switch (menuChoice) { + case HISTORY: + List records = repository.getRecords(); + show.showRecords(records); + break; + case CALCULATION: + String expression = input.inputExpression(); + Stack expressionStack = preProcess.expressionToStack(expression); + int result = calculator.calculate(expressionStack); + repository.save(expression, result); + show.showResult(result); + break; + case WRONGNUMBER: + show.showInvalidInput(); + break; + case END: + return; } - System.out.println(); + show.lineBreak(); } } } From c22e1c6adc688474626d9525b84f58beb1f24b11 Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Fri, 16 Jun 2023 22:29:29 +0900 Subject: [PATCH 20/26] =?UTF-8?q?refactor:=20=EA=B0=9C=ED=96=89=20?= =?UTF-8?q?=EB=AC=B8=EC=9E=90=20=EA=B0=9D=EC=B2=B4=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=88=98=ED=96=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- calculator/src/main/java/org/example/Output/Show.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/calculator/src/main/java/org/example/Output/Show.java b/calculator/src/main/java/org/example/Output/Show.java index d8bfb4d6e..5ad980608 100644 --- a/calculator/src/main/java/org/example/Output/Show.java +++ b/calculator/src/main/java/org/example/Output/Show.java @@ -4,6 +4,12 @@ public interface Show { void showMenu(); + void showRecords(List records); + void showResult(int result); + + void lineBreak(); + + void showInvalidInput(); } From 4f44f1b1d558f15f5aa795e933958e2bcc2bad4f Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Fri, 16 Jun 2023 22:34:00 +0900 Subject: [PATCH 21/26] =?UTF-8?q?refactor:=20stream=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/example/Calculate/PreProcessImpl.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/calculator/src/main/java/org/example/Calculate/PreProcessImpl.java b/calculator/src/main/java/org/example/Calculate/PreProcessImpl.java index cd53b4dc8..a841eec97 100644 --- a/calculator/src/main/java/org/example/Calculate/PreProcessImpl.java +++ b/calculator/src/main/java/org/example/Calculate/PreProcessImpl.java @@ -1,18 +1,20 @@ package org.example.Calculate; +import java.util.Arrays; import java.util.Stack; -public class PreProcessImpl implements PreProcess{ - private String expression; +public class PreProcessImpl implements PreProcess { Stack expressionStack = new Stack<>(); + @Override public Stack expressionToStack(String expression) { - this.expression = expression; - String[] expressionArr = expression.split(" "); - expressionStack.clear(); - for (String inputVal : expressionArr) { - expressionStack.add(inputVal); - } + makeEmptyStack(); + Arrays.stream(expression.split(" ")) + .forEach(expressionStack::add); return expressionStack; } + + private void makeEmptyStack() { + expressionStack.clear(); + } } From f8ef218c979a02cb7ec58151ce123aae6e60bdd9 Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Fri, 16 Jun 2023 22:36:17 +0900 Subject: [PATCH 22/26] =?UTF-8?q?test:=20=EC=82=AC=EC=B9=99=EC=97=B0?= =?UTF-8?q?=EC=82=B0=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/Calculate/CalOrderImplTest.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 calculator/src/test/java/org/example/Calculate/CalOrderImplTest.java diff --git a/calculator/src/test/java/org/example/Calculate/CalOrderImplTest.java b/calculator/src/test/java/org/example/Calculate/CalOrderImplTest.java new file mode 100644 index 000000000..bae7c536c --- /dev/null +++ b/calculator/src/test/java/org/example/Calculate/CalOrderImplTest.java @@ -0,0 +1,35 @@ +package org.example.Calculate; + +import org.junit.jupiter.api.*; + +import java.util.Stack; + +import static org.junit.jupiter.api.Assertions.*; + +class CalOrderImplTest { + PreProcess preProcess = new PreProcessImpl(); + CalOrder calOrder = new CalOrderImpl(); + Stack expressionStack; + String expression = "3 * 6 + 8 / 2"; + + @BeforeEach + void beforeEach(){ + expressionStack = preProcess.expressionToStack(expression); + calOrder.setStack(expressionStack); + } + + @Test + @DisplayName("곱하기 나누기 우선순위 연산 확인") + void calculateMultiplyDivideTest() { + String calculatedMultiplyDivideResult = calOrder.calculateMultiplyDivide(); + assertEquals(calculatedMultiplyDivideResult,"[18, +, 4]"); + } + + @Test + @DisplayName("더하기 빼기 연산 확인") + void calculatePlusMinusTest(){ + calOrder.calculateMultiplyDivide(); + int result = calOrder.calculatePlusMinus(); + assertEquals(result, 22); + } +} \ No newline at end of file From 63e778c3ee14d4e2c07a7df2361a06f798ac3da0 Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Sat, 17 Jun 2023 00:09:31 +0900 Subject: [PATCH 23/26] =?UTF-8?q?test:=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/example/Calculate/CalOrderImplTest.java | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/calculator/src/test/java/org/example/Calculate/CalOrderImplTest.java b/calculator/src/test/java/org/example/Calculate/CalOrderImplTest.java index bae7c536c..b44377970 100644 --- a/calculator/src/test/java/org/example/Calculate/CalOrderImplTest.java +++ b/calculator/src/test/java/org/example/Calculate/CalOrderImplTest.java @@ -18,18 +18,4 @@ void beforeEach(){ calOrder.setStack(expressionStack); } - @Test - @DisplayName("곱하기 나누기 우선순위 연산 확인") - void calculateMultiplyDivideTest() { - String calculatedMultiplyDivideResult = calOrder.calculateMultiplyDivide(); - assertEquals(calculatedMultiplyDivideResult,"[18, +, 4]"); - } - - @Test - @DisplayName("더하기 빼기 연산 확인") - void calculatePlusMinusTest(){ - calOrder.calculateMultiplyDivide(); - int result = calOrder.calculatePlusMinus(); - assertEquals(result, 22); - } } \ No newline at end of file From 8f97f36679557b7ff92d76884e4b3182ba91ee08 Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Sat, 17 Jun 2023 00:13:27 +0900 Subject: [PATCH 24/26] =?UTF-8?q?refactor:=20=EA=B3=84=EC=82=B0=20?= =?UTF-8?q?=EC=88=9C=EC=84=9C=EB=8A=94=20=EB=82=B4=EB=B6=80=EC=A0=81?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=88=A8=EA=B9=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/example/Calculate/CalOrder.java | 4 ++-- .../java/org/example/Calculate/CalOrderImpl.java | 12 +++++++----- .../java/org/example/Calculate/CalculateImpl.java | 3 +-- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/calculator/src/main/java/org/example/Calculate/CalOrder.java b/calculator/src/main/java/org/example/Calculate/CalOrder.java index 6c8999cff..0cf05d928 100644 --- a/calculator/src/main/java/org/example/Calculate/CalOrder.java +++ b/calculator/src/main/java/org/example/Calculate/CalOrder.java @@ -3,7 +3,7 @@ import java.util.Stack; public interface CalOrder { - String calculateMultiplyDivide(); - int calculatePlusMinus(); void setStack(Stack expressionStack); + + int calculate(); } diff --git a/calculator/src/main/java/org/example/Calculate/CalOrderImpl.java b/calculator/src/main/java/org/example/Calculate/CalOrderImpl.java index 16023cd84..1fa1dca80 100644 --- a/calculator/src/main/java/org/example/Calculate/CalOrderImpl.java +++ b/calculator/src/main/java/org/example/Calculate/CalOrderImpl.java @@ -6,8 +6,12 @@ public class CalOrderImpl implements CalOrder { private int result = 0; Stack expressionStack = new Stack<>(); - @Override - public String calculateMultiplyDivide() { + public int calculate() { + calculateMultiplyDivide(); + return calculatePlusMinus(); + } + + private void calculateMultiplyDivide() { for (int i = 1; i < expressionStack.size(); i += 2) { if (expressionStack.get(i).equals("*")) { multiply(i); @@ -17,11 +21,9 @@ public String calculateMultiplyDivide() { i -= 2; } } - return expressionStack.toString(); } - @Override - public int calculatePlusMinus() { + private int calculatePlusMinus() { result = Integer.parseInt(expressionStack.get(0)); for (int i = 1; i < expressionStack.size(); i += 2) { if (expressionStack.get(i).equals("+")) { diff --git a/calculator/src/main/java/org/example/Calculate/CalculateImpl.java b/calculator/src/main/java/org/example/Calculate/CalculateImpl.java index 9b57f6aa7..da3f211f6 100644 --- a/calculator/src/main/java/org/example/Calculate/CalculateImpl.java +++ b/calculator/src/main/java/org/example/Calculate/CalculateImpl.java @@ -11,7 +11,6 @@ public CalculateImpl(CalOrder calOrder) { public int calculate(Stack expressionStack) { calOrder.setStack(expressionStack); - calOrder.calculateMultiplyDivide(); - return calOrder.calculatePlusMinus(); + return calOrder.calculate(); } } From eee0518d976a4853538dfd64bcac6d40958b8fbc Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Sat, 17 Jun 2023 00:38:22 +0900 Subject: [PATCH 25/26] style: CalculateImpl -> Calculator --- calculator/src/main/java/org/example/CalConfig.java | 2 +- .../example/Calculate/{CalculateImpl.java => Calculator.java} | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename calculator/src/main/java/org/example/Calculate/{CalculateImpl.java => Calculator.java} (73%) diff --git a/calculator/src/main/java/org/example/CalConfig.java b/calculator/src/main/java/org/example/CalConfig.java index 4cc45221b..a927f2cbf 100644 --- a/calculator/src/main/java/org/example/CalConfig.java +++ b/calculator/src/main/java/org/example/CalConfig.java @@ -10,7 +10,7 @@ public class CalConfig { public Calculate calculate(){ - return new CalculateImpl(new CalOrderImpl()); + return new Calculator(new CalOrderImpl()); } public Repository repository(){ return new ExpressionRepository(); diff --git a/calculator/src/main/java/org/example/Calculate/CalculateImpl.java b/calculator/src/main/java/org/example/Calculate/Calculator.java similarity index 73% rename from calculator/src/main/java/org/example/Calculate/CalculateImpl.java rename to calculator/src/main/java/org/example/Calculate/Calculator.java index da3f211f6..0838f52f5 100644 --- a/calculator/src/main/java/org/example/Calculate/CalculateImpl.java +++ b/calculator/src/main/java/org/example/Calculate/Calculator.java @@ -2,10 +2,10 @@ import java.util.Stack; -public class CalculateImpl implements Calculate { +public class Calculator implements Calculate { CalOrder calOrder; - public CalculateImpl(CalOrder calOrder) { + public Calculator(CalOrder calOrder) { this.calOrder = calOrder; } From cb39427641d7a5ebb103bf198f0cd411826d4976 Mon Sep 17 00:00:00 2001 From: KimJaeUng <78838534+kju2405@users.noreply.github.com> Date: Sat, 17 Jun 2023 00:38:42 +0900 Subject: [PATCH 26/26] =?UTF-8?q?test:=20=EC=82=AC=EC=B9=99=EC=97=B0?= =?UTF-8?q?=EC=82=B0=20=EC=9A=B0=EC=84=A0=EC=88=9C=EC=9C=84=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/Calculate/CalOrderImplTest.java | 21 ----------- .../example/Calculate/CalculateImplTest.java | 36 +++++++++++++++++++ 2 files changed, 36 insertions(+), 21 deletions(-) delete mode 100644 calculator/src/test/java/org/example/Calculate/CalOrderImplTest.java create mode 100644 calculator/src/test/java/org/example/Calculate/CalculateImplTest.java diff --git a/calculator/src/test/java/org/example/Calculate/CalOrderImplTest.java b/calculator/src/test/java/org/example/Calculate/CalOrderImplTest.java deleted file mode 100644 index b44377970..000000000 --- a/calculator/src/test/java/org/example/Calculate/CalOrderImplTest.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.example.Calculate; - -import org.junit.jupiter.api.*; - -import java.util.Stack; - -import static org.junit.jupiter.api.Assertions.*; - -class CalOrderImplTest { - PreProcess preProcess = new PreProcessImpl(); - CalOrder calOrder = new CalOrderImpl(); - Stack expressionStack; - String expression = "3 * 6 + 8 / 2"; - - @BeforeEach - void beforeEach(){ - expressionStack = preProcess.expressionToStack(expression); - calOrder.setStack(expressionStack); - } - -} \ No newline at end of file diff --git a/calculator/src/test/java/org/example/Calculate/CalculateImplTest.java b/calculator/src/test/java/org/example/Calculate/CalculateImplTest.java new file mode 100644 index 000000000..0f788e6da --- /dev/null +++ b/calculator/src/test/java/org/example/Calculate/CalculateImplTest.java @@ -0,0 +1,36 @@ +package org.example.Calculate; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.Stack; + +class CalculateImplTest { + + PreProcess preProcess = new PreProcessImpl(); + Calculate calculator = new Calculator(new CalOrderImpl()); + + @Test + void calculateTest() { + String expression = "2 * 3 - 6 / 3"; + Stack expressionStack = preProcess.expressionToStack(expression); + int result = calculator.calculate(expressionStack); + Assertions.assertEquals(result, 4); + } + + @Test + void calculateTest2() { + String expression = "3 * 6 * 2 / 2"; + Stack expressionStack = preProcess.expressionToStack(expression); + int result = calculator.calculate(expressionStack); + Assertions.assertEquals(result, 18); + } + + @Test + void calculateTest3() { + String expression = "3 + 6 + 2 + 2"; + Stack expressionStack = preProcess.expressionToStack(expression); + int result = calculator.calculate(expressionStack); + Assertions.assertEquals(result, 13); + } +} \ No newline at end of file