From 7274315ae3b1f05cf0f25b41a3dcfc3e8ba84272 Mon Sep 17 00:00:00 2001 From: gyim Date: Thu, 4 Jun 2020 20:08:01 +0900 Subject: [PATCH 1/4] =?UTF-8?q?1=20=EB=8B=A8=EA=B3=84=20=ED=95=99=EC=8A=B5?= =?UTF-8?q?=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=8B=A4=EC=8A=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit test Char,Set,String methods following the instructions --- build.gradle | 1 + src/main/java/CharMethods.java | 7 ++++ src/main/java/SetMethods.java | 9 +++++ src/main/java/StringMethods.java | 9 +++++ src/main/java/empty.txt | 1 + src/test/java/CharMethodsTest.java | 50 +++++++++++++++++++++++ src/test/java/SetMethodsTest.java | 60 ++++++++++++++++++++++++++++ src/test/java/StringMethodsTest.java | 41 +++++++++++++++++++ 8 files changed, 178 insertions(+) create mode 100644 src/main/java/CharMethods.java create mode 100644 src/main/java/SetMethods.java create mode 100644 src/main/java/StringMethods.java create mode 100644 src/test/java/CharMethodsTest.java create mode 100644 src/test/java/SetMethodsTest.java create mode 100644 src/test/java/StringMethodsTest.java diff --git a/build.gradle b/build.gradle index 57219ed..f4e4db8 100644 --- a/build.gradle +++ b/build.gradle @@ -11,6 +11,7 @@ repositories { dependencies { testCompile('org.junit.jupiter:junit-jupiter:5.4.2') testCompile('org.assertj:assertj-core:3.11.1') + testCompile("org.junit.jupiter:junit-jupiter-params:5.4.2") } test { diff --git a/src/main/java/CharMethods.java b/src/main/java/CharMethods.java new file mode 100644 index 0000000..4892dc6 --- /dev/null +++ b/src/main/java/CharMethods.java @@ -0,0 +1,7 @@ + + +public class CharMethods { + public char charAt(String string, int index) { + return string.charAt(index); + } +} diff --git a/src/main/java/SetMethods.java b/src/main/java/SetMethods.java new file mode 100644 index 0000000..a8d743c --- /dev/null +++ b/src/main/java/SetMethods.java @@ -0,0 +1,9 @@ +import java.util.List; +import java.util.Set; + +public class SetMethods { + public int getSize(Set set) { + return set.size(); + } + +} diff --git a/src/main/java/StringMethods.java b/src/main/java/StringMethods.java new file mode 100644 index 0000000..63df436 --- /dev/null +++ b/src/main/java/StringMethods.java @@ -0,0 +1,9 @@ +public class StringMethods { + public String[] splitStrings(String string) { + return string.split(""); + } + + public static String subString(String string, int a, int b) { + return string.substring(a,b); + } +} diff --git a/src/main/java/empty.txt b/src/main/java/empty.txt index e69de29..24c6c86 100644 --- a/src/main/java/empty.txt +++ b/src/main/java/empty.txt @@ -0,0 +1 @@ +ㄷㄱㅀㄴㄷㄹ \ No newline at end of file diff --git a/src/test/java/CharMethodsTest.java b/src/test/java/CharMethodsTest.java new file mode 100644 index 0000000..b3aa534 --- /dev/null +++ b/src/test/java/CharMethodsTest.java @@ -0,0 +1,50 @@ +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; + +import java.util.HashSet; + +import static org.assertj.core.api.Assertions.*; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; + +@DisplayName("Char Methods 테스트") +public class CharMethodsTest { + private CharMethods charMethods; + @BeforeEach + void setUp() { + charMethods = new CharMethods(); + } + + @DisplayName("charAt 테스트") + @ParameterizedTest + @CsvSource(value = {"abc:0:a", "abc:1:b", "abc:2:c"}, delimiter = ':') + public void charIOTest(String string,int index, char expected) { + assertThat(charMethods.charAt(string, index)).isEqualTo(expected); + } + + @DisplayName("charAt Error Index out of bound 테스트") + @Test + public void charErrorTest() { + + assertThatThrownBy(() -> { + charMethods.charAt("abc", 3); + }).isInstanceOf(IndexOutOfBoundsException.class) + .hasMessageContaining("String index out of range: 3"); + +// Throwable thrown = catchThrowable(() -> { throw new Exception("String index out of range: 3"); }); +// assertThat(thrown).isInstanceOf(Exception.class) .hasMessageContaining("String index out of range: 3"); + + assertThatExceptionOfType(IndexOutOfBoundsException.class).isThrownBy(() -> charMethods.charAt("abc", 3)) + .withMessage("String index out of range: 3") + .withMessageContaining("String") + .withNoCause(); + +// assertThatExceptionOfType(IndexOutOfBoundsException.class).isThrownBy(() -> { throw new IndexOutOfBoundsException("NO!"); }) +// .withMessage("NO!") +// .withMessageContaining("NO") +// .withNoCause(); + + } +} diff --git a/src/test/java/SetMethodsTest.java b/src/test/java/SetMethodsTest.java new file mode 100644 index 0000000..d06a426 --- /dev/null +++ b/src/test/java/SetMethodsTest.java @@ -0,0 +1,60 @@ +import org.assertj.core.internal.Numbers; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; +import org.junit.jupiter.params.provider.ValueSource; +import static org.junit.jupiter.api.Assertions.assertTrue; + + +import java.util.HashSet; +import java.util.Set; + +import static org.assertj.core.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertTrue; + +@DisplayName("set Method Test") +public class SetMethodsTest { + private Set numbers; + private SetMethods setMethods; + @BeforeEach + void setUp() { + setMethods = new SetMethods(); + numbers = new HashSet<>(); + numbers.add(1); + numbers.add(1); + numbers.add(2); + numbers.add(3); + } + + @DisplayName("set 사이즈 테스트") + @Test + public void setSizeTest() { + int setSize = setMethods.getSize(numbers); + assertThat(setSize).isEqualTo(3); + } + + @DisplayName("set 내용물 확인 테스트") + @ParameterizedTest + @ValueSource(ints = {1,1,2,3}) + public void setContainsTest(int number) { + assertThat(numbers.contains(number)).isTrue(); + } + +// @Test +// public void setThrowErrorTest() { +// assertThat(numbers.contains(true)).isEqualTo(false); +// assertThat(numbers.contains(4)).isEqualTo(false); +// assertThat(numbers.contains(5)).isEqualTo(false); +// } + + @DisplayName("set 입력 출력 테스트") + @ParameterizedTest + @CsvSource(value = {"1:true", "2:true", "3:true", "4:false", "5:false" }, delimiter = ':') + public void setIOTest(int input, boolean expected) { + assertThat(numbers.contains(input)).isEqualTo(expected); + + } + +} diff --git a/src/test/java/StringMethodsTest.java b/src/test/java/StringMethodsTest.java new file mode 100644 index 0000000..f47feb7 --- /dev/null +++ b/src/test/java/StringMethodsTest.java @@ -0,0 +1,41 @@ +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.*; + +@DisplayName("String Method 테스트") +public class StringMethodsTest { + private StringMethods stringMethods; + + @BeforeEach + void setUp() { + stringMethods = new StringMethods(); + } + + @DisplayName("String split 테스트") + @Test + public void splitStringTest() { + String[] splittedString = stringMethods.splitStrings("12"); + assertThat(splittedString).contains("1","2"); + assertThat(splittedString).containsExactly("1","2"); + assertThat(splittedString).isEqualTo(new String[]{"1","2"}); + + String[] splittedString1 = stringMethods.splitStrings("1"); + assertThat(splittedString1).isEqualTo(new String[]{"1"}); + assertThat(splittedString1).contains("1"); + assertThat(splittedString1).containsExactly("1"); + + } + + @DisplayName("String subString 테스트") + @Test + public void subStringTest() { + String modifiedString = stringMethods.subString("(1,2)", 1,4); + assertThat(modifiedString).isEqualTo("1,2"); + assertThat(modifiedString).doesNotContain("("); + assertThat(modifiedString).doesNotContain(")"); + } +} + + From cde90e7807b09406b8e25ca963d365c7bbb9d416 Mon Sep 17 00:00:00 2001 From: gyim Date: Fri, 5 Jun 2020 17:47:41 +0900 Subject: [PATCH 2/4] =?UTF-8?q?2=20=EB=8B=A8=EA=B3=84=20=ED=95=99=EC=8A=B5?= =?UTF-8?q?=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=8B=A4=EC=8A=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Make simple Calculator with only arithmetic operatior functions and test --- .../Step2_Calculator/ArithmeticOperation.java | 41 ++++++++++++ .../java/Step2_Calculator/Calculator.java | 18 +++++ .../Step2_Calculator/InputErrorHandler.java | 14 ++++ .../java/Step2_Calculator/InputExtactor.java | 7 ++ src/test/java/CalculatorTest.java | 65 +++++++++++++++++++ 5 files changed, 145 insertions(+) create mode 100644 src/main/java/Step2_Calculator/ArithmeticOperation.java create mode 100644 src/main/java/Step2_Calculator/Calculator.java create mode 100644 src/main/java/Step2_Calculator/InputErrorHandler.java create mode 100644 src/main/java/Step2_Calculator/InputExtactor.java create mode 100644 src/test/java/CalculatorTest.java diff --git a/src/main/java/Step2_Calculator/ArithmeticOperation.java b/src/main/java/Step2_Calculator/ArithmeticOperation.java new file mode 100644 index 0000000..efd8b54 --- /dev/null +++ b/src/main/java/Step2_Calculator/ArithmeticOperation.java @@ -0,0 +1,41 @@ +package Step2_Calculator; + +public class ArithmeticOperation { + + public static int arithmeticOperation(int acc, int curr, String arithmeticOperator) { + + if(arithmeticOperator.equals("+")){ + return sum(acc, curr); + } + + if(arithmeticOperator.equals("-")){ + return subtract(acc, curr); + } + + if(arithmeticOperator.equals("/")){ + return divide(acc, curr); + } + + if(arithmeticOperator.equals("*")){ + return multiply(acc, curr); + } + + return 0; + } + + private static int sum(int acc, int curr) { + return acc + curr; + } + + private static int divide(int acc, int curr) { + return acc / curr; + } + + private static int multiply(int acc, int curr) { + return acc * curr; + } + + private static int subtract(int acc, int curr) { + return acc - curr; + } +} diff --git a/src/main/java/Step2_Calculator/Calculator.java b/src/main/java/Step2_Calculator/Calculator.java new file mode 100644 index 0000000..cf5c1f9 --- /dev/null +++ b/src/main/java/Step2_Calculator/Calculator.java @@ -0,0 +1,18 @@ +package Step2_Calculator; + +public class Calculator { + private int acc; + + public int calculate(String s) { + InputErrorHandler.checkCalculatorIllegalArgument(s); + String[] arithmetics = InputExtactor.extractCalculatorInputs(s); + + acc = Integer.parseInt(arithmetics[0]); + + for(int i = 1; i< arithmetics.length; i += 2) { + acc = ArithmeticOperation.arithmeticOperation(acc, Integer.parseInt(arithmetics[i+1]), arithmetics[i]); + } + + return acc; + } +} diff --git a/src/main/java/Step2_Calculator/InputErrorHandler.java b/src/main/java/Step2_Calculator/InputErrorHandler.java new file mode 100644 index 0000000..7581cb4 --- /dev/null +++ b/src/main/java/Step2_Calculator/InputErrorHandler.java @@ -0,0 +1,14 @@ +package Step2_Calculator; + +public class InputErrorHandler { + public static void checkCalculatorIllegalArgument(String s){ + String numbersToSingleLength = s.replaceAll("-?\\d+", "1"); + String noSpace = numbersToSingleLength.replaceAll(" ", ""); + if(numbersToSingleLength.length() != noSpace.length()*2-1) { + throw new IllegalArgumentException("1"); + } + if(s.matches("^[^\\d+*/\\-]+$")){ + throw new IllegalArgumentException("1"); + } + } +} diff --git a/src/main/java/Step2_Calculator/InputExtactor.java b/src/main/java/Step2_Calculator/InputExtactor.java new file mode 100644 index 0000000..6e137a1 --- /dev/null +++ b/src/main/java/Step2_Calculator/InputExtactor.java @@ -0,0 +1,7 @@ +package Step2_Calculator; + +public class InputExtactor { + public static String[] extractCalculatorInputs(String s) { + return s.split(" "); + } +} diff --git a/src/test/java/CalculatorTest.java b/src/test/java/CalculatorTest.java new file mode 100644 index 0000000..d83546b --- /dev/null +++ b/src/test/java/CalculatorTest.java @@ -0,0 +1,65 @@ +import Step2_Calculator.Calculator; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; +import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; + +import static org.assertj.core.api.Assertions.*; + +public class CalculatorTest { + private Calculator calculator; + + @BeforeEach + void setUp() { + calculator = new Calculator(); + } + + @DisplayName("test calculator") + @ParameterizedTest + @CsvSource(value = {"2 + 3 * 4 / 2:10", "1:1", "0 * 10 * 11 + 3: 3"}, delimiter = ':') + public void calculatorTestArithmeticOperations(String arithmetic, int result) { + assertThat(calculator.calculate(arithmetic)).isEqualTo(result); + } + + @DisplayName("null input") + @Test + public void calculatorTestWithNull() { + assertThatIllegalArgumentException().isThrownBy(() -> { + calculator.calculate("null"); + }); + } + + @DisplayName("wrong input") + @Test + public void calculatorTestWithWrongInput() { + assertThatIllegalArgumentException().isThrownBy(() -> { + calculator.calculate("!"); + }); + } + + @DisplayName("wrong format") + @Test + public void calculatorTestWithWrongFormat() { + assertThatIllegalArgumentException().isThrownBy(() -> { + calculator.calculate("4 + a"); + }); + } + + @DisplayName("space inputs") + @Test + public void calculatorTestWithSpaceInputs() { + assertThatIllegalArgumentException().isThrownBy(() -> { + calculator.calculate("4 + 1 * 2"); + }); + } + + @DisplayName("negative inputs") + @Test + public void calculatorTestWithNegativeInputs() { + assertThat(calculator.calculate("-4 - 1 * 2")).isEqualTo(-10); + } + + +} From a49abe8a4f5b08dfc5f6b7770ef21ae82ca8f098 Mon Sep 17 00:00:00 2001 From: gyim Date: Fri, 5 Jun 2020 17:52:18 +0900 Subject: [PATCH 3/4] Move files to packages according to its relevance --- .../CharMethods.java" | 2 +- .../SetMethods.java" | 3 ++- .../StringMethods.java" | 2 ++ .../CharMethodsTest.java" | 5 +++-- .../SetMethodsTest.java" | 5 +++-- .../StringMethodsTest.java" | 3 +++ src/test/java/{ => Step2_Calculator}/CalculatorTest.java | 2 ++ 7 files changed, 16 insertions(+), 6 deletions(-) rename src/main/java/CharMethods.java => "src/main/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/CharMethods.java" (80%) rename src/main/java/SetMethods.java => "src/main/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/SetMethods.java" (80%) rename src/main/java/StringMethods.java => "src/main/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/StringMethods.java" (87%) rename src/test/java/CharMethodsTest.java => "src/test/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/CharMethodsTest.java" (96%) rename src/test/java/SetMethodsTest.java => "src/test/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/SetMethodsTest.java" (94%) rename src/test/java/StringMethodsTest.java => "src/test/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/StringMethodsTest.java" (94%) rename src/test/java/{ => Step2_Calculator}/CalculatorTest.java (98%) diff --git a/src/main/java/CharMethods.java "b/src/main/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/CharMethods.java" similarity index 80% rename from src/main/java/CharMethods.java rename to "src/main/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/CharMethods.java" index 4892dc6..61e7c80 100644 --- a/src/main/java/CharMethods.java +++ "b/src/main/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/CharMethods.java" @@ -1,4 +1,4 @@ - +package Step1_학습테스트; public class CharMethods { public char charAt(String string, int index) { diff --git a/src/main/java/SetMethods.java "b/src/main/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/SetMethods.java" similarity index 80% rename from src/main/java/SetMethods.java rename to "src/main/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/SetMethods.java" index a8d743c..3449768 100644 --- a/src/main/java/SetMethods.java +++ "b/src/main/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/SetMethods.java" @@ -1,4 +1,5 @@ -import java.util.List; +package Step1_학습테스트; + import java.util.Set; public class SetMethods { diff --git a/src/main/java/StringMethods.java "b/src/main/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/StringMethods.java" similarity index 87% rename from src/main/java/StringMethods.java rename to "src/main/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/StringMethods.java" index 63df436..5f6335e 100644 --- a/src/main/java/StringMethods.java +++ "b/src/main/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/StringMethods.java" @@ -1,3 +1,5 @@ +package Step1_학습테스트; + public class StringMethods { public String[] splitStrings(String string) { return string.split(""); diff --git a/src/test/java/CharMethodsTest.java "b/src/test/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/CharMethodsTest.java" similarity index 96% rename from src/test/java/CharMethodsTest.java rename to "src/test/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/CharMethodsTest.java" index b3aa534..34b5431 100644 --- a/src/test/java/CharMethodsTest.java +++ "b/src/test/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/CharMethodsTest.java" @@ -1,11 +1,12 @@ +package Step1_학습테스트; + +import Step1_학습테스트.CharMethods; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; -import java.util.HashSet; - import static org.assertj.core.api.Assertions.*; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; diff --git a/src/test/java/SetMethodsTest.java "b/src/test/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/SetMethodsTest.java" similarity index 94% rename from src/test/java/SetMethodsTest.java rename to "src/test/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/SetMethodsTest.java" index d06a426..30deb2b 100644 --- a/src/test/java/SetMethodsTest.java +++ "b/src/test/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/SetMethodsTest.java" @@ -1,4 +1,6 @@ -import org.assertj.core.internal.Numbers; +package Step1_학습테스트; + +import Step1_학습테스트.SetMethods; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -12,7 +14,6 @@ import java.util.Set; import static org.assertj.core.api.Assertions.*; -import static org.junit.jupiter.api.Assertions.assertTrue; @DisplayName("set Method Test") public class SetMethodsTest { diff --git a/src/test/java/StringMethodsTest.java "b/src/test/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/StringMethodsTest.java" similarity index 94% rename from src/test/java/StringMethodsTest.java rename to "src/test/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/StringMethodsTest.java" index f47feb7..724a4d8 100644 --- a/src/test/java/StringMethodsTest.java +++ "b/src/test/java/Step1_\355\225\231\354\212\265\355\205\214\354\212\244\355\212\270/StringMethodsTest.java" @@ -1,3 +1,6 @@ +package Step1_학습테스트; + +import Step1_학습테스트.StringMethods; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/CalculatorTest.java b/src/test/java/Step2_Calculator/CalculatorTest.java similarity index 98% rename from src/test/java/CalculatorTest.java rename to src/test/java/Step2_Calculator/CalculatorTest.java index d83546b..cf02e0a 100644 --- a/src/test/java/CalculatorTest.java +++ b/src/test/java/Step2_Calculator/CalculatorTest.java @@ -1,3 +1,5 @@ +package Step2_Calculator; + import Step2_Calculator.Calculator; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; From b9f6c341d02201c50999bb331b1f9bb9db304101 Mon Sep 17 00:00:00 2001 From: gyim Date: Fri, 5 Jun 2020 19:10:04 +0900 Subject: [PATCH 4/4] Add CalculatorApp, inputView, OutputView, fixregex Add App and view for running app Fix regex --- .../Step2_Calculator/ArithmeticOperation.java | 2 +- src/main/java/Step2_Calculator/Calculator.java | 5 +++-- .../java/Step2_Calculator/CalculatorApp.java | 11 +++++++++++ .../java/Step2_Calculator/InputErrorHandler.java | 9 ++++++--- src/main/java/Step2_Calculator/InputView.java | 16 ++++++++++++++++ src/main/java/Step2_Calculator/OutputView.java | 9 +++++++++ 6 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 src/main/java/Step2_Calculator/CalculatorApp.java create mode 100644 src/main/java/Step2_Calculator/InputView.java create mode 100644 src/main/java/Step2_Calculator/OutputView.java diff --git a/src/main/java/Step2_Calculator/ArithmeticOperation.java b/src/main/java/Step2_Calculator/ArithmeticOperation.java index efd8b54..0cdcee3 100644 --- a/src/main/java/Step2_Calculator/ArithmeticOperation.java +++ b/src/main/java/Step2_Calculator/ArithmeticOperation.java @@ -20,7 +20,7 @@ public static int arithmeticOperation(int acc, int curr, String arithmeticOperat return multiply(acc, curr); } - return 0; + return acc; } private static int sum(int acc, int curr) { diff --git a/src/main/java/Step2_Calculator/Calculator.java b/src/main/java/Step2_Calculator/Calculator.java index cf5c1f9..7c7af6d 100644 --- a/src/main/java/Step2_Calculator/Calculator.java +++ b/src/main/java/Step2_Calculator/Calculator.java @@ -8,11 +8,12 @@ public int calculate(String s) { String[] arithmetics = InputExtactor.extractCalculatorInputs(s); acc = Integer.parseInt(arithmetics[0]); - + System.out.println(acc); + for(int i = 1; i< arithmetics.length; i += 2) { acc = ArithmeticOperation.arithmeticOperation(acc, Integer.parseInt(arithmetics[i+1]), arithmetics[i]); } - + System.out.println(acc); return acc; } } diff --git a/src/main/java/Step2_Calculator/CalculatorApp.java b/src/main/java/Step2_Calculator/CalculatorApp.java new file mode 100644 index 0000000..3875721 --- /dev/null +++ b/src/main/java/Step2_Calculator/CalculatorApp.java @@ -0,0 +1,11 @@ +package Step2_Calculator; + +public class CalculatorApp { + public static void main(String[] args) { + InputView.startCalculator(); + String input = InputView.inputArithmeticOperations(); + Calculator calculator = new Calculator(); + int result = calculator.calculate(input); + OutputView.showOutput(result); + } +} diff --git a/src/main/java/Step2_Calculator/InputErrorHandler.java b/src/main/java/Step2_Calculator/InputErrorHandler.java index 7581cb4..bed5bb2 100644 --- a/src/main/java/Step2_Calculator/InputErrorHandler.java +++ b/src/main/java/Step2_Calculator/InputErrorHandler.java @@ -5,10 +5,13 @@ public static void checkCalculatorIllegalArgument(String s){ String numbersToSingleLength = s.replaceAll("-?\\d+", "1"); String noSpace = numbersToSingleLength.replaceAll(" ", ""); if(numbersToSingleLength.length() != noSpace.length()*2-1) { - throw new IllegalArgumentException("1"); + throw new IllegalArgumentException("Wrong input Format! Must be (number) (arithmetic Operator) (number) ... so on with no null inputs"); } - if(s.matches("^[^\\d+*/\\-]+$")){ - throw new IllegalArgumentException("1"); + + if(!s.matches("[\\d+*/\\-]+")){ + System.out.println("asdasdasd"); + throw new IllegalArgumentException("Wrong inputs!!!"); } + } } diff --git a/src/main/java/Step2_Calculator/InputView.java b/src/main/java/Step2_Calculator/InputView.java new file mode 100644 index 0000000..e81272d --- /dev/null +++ b/src/main/java/Step2_Calculator/InputView.java @@ -0,0 +1,16 @@ +package Step2_Calculator; + +import java.util.Scanner; + +public class InputView { + private static Scanner scanner; + + public static void startCalculator(){ + System.out.print("Input Arithmetic Operations : "); + } + public static String inputArithmeticOperations() { + scanner = new Scanner(System.in); + return scanner.nextLine(); + } + +} diff --git a/src/main/java/Step2_Calculator/OutputView.java b/src/main/java/Step2_Calculator/OutputView.java new file mode 100644 index 0000000..747a357 --- /dev/null +++ b/src/main/java/Step2_Calculator/OutputView.java @@ -0,0 +1,9 @@ +package Step2_Calculator; + +public class OutputView { + + public static void showOutput(int result) { + System.out.println("Result :" + result); + } + +}