Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions src/main/java/Calculator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
public class Calculator {

public int add(int fir, int sec) {
return fir + sec;
}

public int subtract(int fir, int sec) {
return fir - sec;
}

public int multiply(int fir, int sec) {
return fir * sec;
}

public int divide(int fir, int sec) {
if (sec == 0) {
throw new ArithmeticException("Divide by zero");
}
return fir / sec;
}


}
40 changes: 40 additions & 0 deletions src/main/java/StringCalculator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
public class StringCalculator {

public int add(String string) {
if (string.isEmpty()) {
return 0;
}


String[] numbers = string.split(",|:");
return sum(numbers);
}

private int sum(String[] numbers) {
int total = 0;

for (String number : numbers) {
int num = checkNumber(number);
total += num;
}

return total;
}

private int checkNumber(String number) {
if (number.isEmpty()) {
return 0;
}

// 숫자가 아닌 경우 RuntimeException 발생
try {
int num = Integer.parseInt(number);
if (num < 0) {
throw new RuntimeException("음수가 포함되어 있습니다.");
}
return num;
} catch (NumberFormatException e) {
throw new RuntimeException("잘못된 입력입니다.");
}
}
}
15 changes: 15 additions & 0 deletions src/test/java/CalculatorTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
public class CalculatorTest {

public static void main(String[] args) {

Calculator calc = new Calculator();

System.out.println(calc.add(10, 20));
System.out.println(calc.add(10, -5));
System.out.println(calc.subtract(10, 20));
System.out.println(calc.multiply(10, 20));
System.out.println(calc.divide(10, 5));


}
}
46 changes: 46 additions & 0 deletions src/test/java/StringCalculatorTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

public class StringCalculatorTest {

private final StringCalculator calculator = new StringCalculator();

@Test
public void testEmptyString() {
assertEquals(0, calculator.add(""));
}


@Test
public void testNumbers() {
assertEquals(3, calculator.add("1,2"));
assertEquals(7, calculator.add("3:4"));
assertEquals(6, calculator.add("1,2,3"));
assertEquals(10, calculator.add("4:2:4"));
assertEquals(15, calculator.add("1,2:3,4,5"));
}

@Test
public void testNegativeNumber() {
RuntimeException exception = assertThrows(RuntimeException.class, () -> {
calculator.add("1,-2");
});
assertEquals("음수가 포함되어 있습니다.", exception.getMessage());
}

@Test
public void testInvalidString() {
RuntimeException exception = assertThrows(RuntimeException.class, () -> {
calculator.add("1,a");
});
assertEquals("잘못된 입력입니다.", exception.getMessage());
}

@Test
public void testMixedDelimiters() {
assertEquals(10, calculator.add("1,2:3,4"));
assertEquals(15, calculator.add("1,2:3,4,5"));
}
}