From 062beda77e1730acad83ccf01a10543fae3803b2 Mon Sep 17 00:00:00 2001 From: Xi Xu Date: Fri, 22 Mar 2024 17:14:25 +0800 Subject: [PATCH] add package calculator --- calculator/Add.java | 8 ++++++++ calculator/Compute.java | 5 +++++ calculator/Divide.java | 8 ++++++++ calculator/Factory.java | 18 ++++++++++++++++++ calculator/Multiply.java | 8 ++++++++ calculator/Subtract.java | 8 ++++++++ calculator/Test.java | 17 +++++++++++++++++ 7 files changed, 72 insertions(+) create mode 100644 calculator/Add.java create mode 100644 calculator/Compute.java create mode 100644 calculator/Divide.java create mode 100644 calculator/Factory.java create mode 100644 calculator/Multiply.java create mode 100644 calculator/Subtract.java create mode 100644 calculator/Test.java diff --git a/calculator/Add.java b/calculator/Add.java new file mode 100644 index 0000000..32329c4 --- /dev/null +++ b/calculator/Add.java @@ -0,0 +1,8 @@ +package calculator; + +public class Add implements Compute { + @Override + public int computer(int n, int m) { + return n + m; + } +} \ No newline at end of file diff --git a/calculator/Compute.java b/calculator/Compute.java new file mode 100644 index 0000000..c5a8c0e --- /dev/null +++ b/calculator/Compute.java @@ -0,0 +1,5 @@ +package calculator; + +public interface Compute { + int computer(int n, int m); +} \ No newline at end of file diff --git a/calculator/Divide.java b/calculator/Divide.java new file mode 100644 index 0000000..708b7dd --- /dev/null +++ b/calculator/Divide.java @@ -0,0 +1,8 @@ +package calculator; + +public class Divide implements Compute { + @Override + public int computer(int n, int m) { + return n / m; + } +} \ No newline at end of file diff --git a/calculator/Factory.java b/calculator/Factory.java new file mode 100644 index 0000000..7425f9d --- /dev/null +++ b/calculator/Factory.java @@ -0,0 +1,18 @@ +package calculator; + +public class Factory { + public static Compute getCompute(char op) { + switch (op) { + case '+': + return new Add(); + case '-': + return new Subtract(); + case '*': + return new Multiply(); + case '/': + return new Divide(); + default: + return null; + } + } +} \ No newline at end of file diff --git a/calculator/Multiply.java b/calculator/Multiply.java new file mode 100644 index 0000000..f4f86b5 --- /dev/null +++ b/calculator/Multiply.java @@ -0,0 +1,8 @@ +package calculator; + +public class Multiply implements Compute { + @Override + public int computer(int n, int m) { + return n * m; + } +} \ No newline at end of file diff --git a/calculator/Subtract.java b/calculator/Subtract.java new file mode 100644 index 0000000..56b2efe --- /dev/null +++ b/calculator/Subtract.java @@ -0,0 +1,8 @@ +package calculator; + +public class Subtract implements Compute { + @Override + public int computer(int n, int m) { + return n - m; + } +} \ No newline at end of file diff --git a/calculator/Test.java b/calculator/Test.java new file mode 100644 index 0000000..61294c5 --- /dev/null +++ b/calculator/Test.java @@ -0,0 +1,17 @@ +package calculator; + +import java.util.Scanner; + +public class Test { + public static void main(String[] args) { + try (Scanner sc = new Scanner(System.in)) { + while (true) { + System.out.print(">>> "); + int a = sc.nextInt(); + char op = sc.next().charAt(0); + int b = sc.nextInt(); + System.out.println(Factory.getCompute(op).computer(a, b)); + } + } + } +} \ No newline at end of file