diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b82aa23a4f..aa7f28955b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/java/calculator/Application.java b/src/main/java/calculator/Application.java index 573580fb40..638c953ca5 100644 --- a/src/main/java/calculator/Application.java +++ b/src/main/java/calculator/Application.java @@ -1,7 +1,22 @@ package calculator; +import calculator.domain.Calculate; +import calculator.domain.Strings; +import calculator.io.CalculatorInput; +import calculator.io.CalculatorOutput; + public class Application { public static void main(String[] args) { - // TODO: 프로그램 구현 + CalculatorInput input = new CalculatorInput(); + CalculatorOutput output = new CalculatorOutput(); + + output.printAskingString(); + Strings string = input.getString(); + Calculate calculate = new Calculate(string); + int result = calculate.addNumbers(); + output.printResult(); + System.out.println(result); + + } } diff --git a/src/main/java/calculator/domain/Calculate.java b/src/main/java/calculator/domain/Calculate.java new file mode 100644 index 0000000000..2b6a7eed5f --- /dev/null +++ b/src/main/java/calculator/domain/Calculate.java @@ -0,0 +1,25 @@ +package calculator.domain; + +public class Calculate { + + private final String[] numbers; + private int sum = 0; + + public Calculate(Strings strings) { + this.numbers = strings.distinguisher(); + } + + public int addNumbers() { + + for (String number : numbers) { + int i = Integer.parseInt(number); + + if (i <= 0) { + throw new IllegalArgumentException("올바른 값을 입력해주세요"); + } + + sum += i; + } + return sum; + } +} \ No newline at end of file diff --git a/src/main/java/calculator/domain/Strings.java b/src/main/java/calculator/domain/Strings.java new file mode 100644 index 0000000000..cafc95083b --- /dev/null +++ b/src/main/java/calculator/domain/Strings.java @@ -0,0 +1,33 @@ +package calculator.domain; + +public class Strings { + + public String[] input; + private final String original; + public String distinguish = ",|:"; + + public Strings(String input) { + this.input = input.split(""); + this.original = input; + } + + public boolean isCustomExist() { + if (input[0].equals("/") && input[1].equals("/")) { + int delimiterEndIndex = original.indexOf("\\n"); + if (delimiterEndIndex == -1) { + throw new IllegalArgumentException("잘못된 커스텀 구분자"); + } + return true; + } + return false; + } + + public String[] distinguisher() { + if(isCustomExist()) { + String temp = input[2]; + String substring = original.substring(5); + return substring.split(temp); + } + return original.split(distinguish); + } +} \ No newline at end of file diff --git a/src/main/java/calculator/io/CalculatorInput.java b/src/main/java/calculator/io/CalculatorInput.java new file mode 100644 index 0000000000..6c23d1059f --- /dev/null +++ b/src/main/java/calculator/io/CalculatorInput.java @@ -0,0 +1,16 @@ +package calculator.io; + +import calculator.domain.Strings; +import camp.nextstep.edu.missionutils.Console; + +public class CalculatorInput { + + public CalculatorInput() { + } + + public Strings getString() { + String input = Console.readLine(); + + return new Strings(input); + } +} diff --git a/src/main/java/calculator/io/CalculatorOutput.java b/src/main/java/calculator/io/CalculatorOutput.java new file mode 100644 index 0000000000..b340cfc195 --- /dev/null +++ b/src/main/java/calculator/io/CalculatorOutput.java @@ -0,0 +1,12 @@ +package calculator.io; + +public class CalculatorOutput { + + public void printAskingString() { + System.out.println("덧셈할 문자열을 입력해 주세요."); + } + + public void printResult() { + System.out.print("결과 : "); + } +} \ No newline at end of file