diff --git a/java/string_calculator/pom.xml b/java/string_calculator/pom.xml new file mode 100644 index 0000000..5e7c7cf --- /dev/null +++ b/java/string_calculator/pom.xml @@ -0,0 +1,30 @@ + + + 4.0.0 + + string_calculator + string_calculator + 1.0 + + + + org.hamcrest + hamcrest-all + 1.1 + + + + org.mockito + mockito-all + 1.9.0-rc1 + + + junit + junit + 4.8.2 + + + + \ No newline at end of file diff --git a/java/string_calculator/src/main/java/StringCalculator.java b/java/string_calculator/src/main/java/StringCalculator.java new file mode 100644 index 0000000..7345574 --- /dev/null +++ b/java/string_calculator/src/main/java/StringCalculator.java @@ -0,0 +1,20 @@ +public class StringCalculator { + public int add(String s) { + if (s.isEmpty()) { + return 0; + } + if (s.startsWith("//")) { + int returnValue = 0; + for (String n : s.substring(4).split("[\n"+ s.charAt(2) +"]")) { + returnValue += Integer.parseInt(n); + } + return returnValue; + } else { + int r = 0; // result + for (String n : s.split("[\n,]")) { + r += Integer.parseInt(n); + } + return r; + } + } +} diff --git a/java/string_calculator/src/test/java/StringCalculatorTest.java b/java/string_calculator/src/test/java/StringCalculatorTest.java new file mode 100644 index 0000000..31fbab0 --- /dev/null +++ b/java/string_calculator/src/test/java/StringCalculatorTest.java @@ -0,0 +1,16 @@ +import org.junit.Test; + +import static junit.framework.Assert.assertEquals; + +public class StringCalculatorTest { + + @Test + public void testCalculator() throws Exception { + StringCalculator s = new StringCalculator(); + assertEquals(0, s.add("")); //should treat empty string as zero + assertEquals(17, s.add("17")); // should add single numbers + assertEquals(2356, s.add("2341,15")); // should add comma separated numbers + assertEquals(35, s.add("34\n1")); // should treat new line as separator + assertEquals(7, s.add("//;\n5;2")); // should support custom separators + } +}