diff --git a/README.md b/README.md index bd90ef0247..2d951c2ab1 100644 --- a/README.md +++ b/README.md @@ -1 +1,14 @@ -# java-calculator-precourse \ No newline at end of file +# java-calculator-precourse +기능 1. 사용자의 입력값을 읽는다. + +입력값을 받을 땐 "덧셈할 문자열을 입력해 주세요."의 형식을 따른다. +기능 2. 유효한 입력값인지 확인한다. + +기본 구분자(쉼표 혹은 콜론)로 구분되는 경우인지 사용자의 커스텀 구분자로 구분되는 경우인지 구분한다. +구분자에 대한 판단과 함께 구분되어진 값들이 양의 정수인지 확인한다. +유효하지 않은 입력값이라면 IllegalArgumentException을 throw하고 프로그램을 종료한다. +기능 3. 구분자로 나뉘어있는 양수를 모두 더한다. + +기능 4. 구한 총합을 출력한다. + +출력 형식은 "결과 : [값]"의 형식을 따른다. diff --git a/src/main/java/calculator/Application.java b/src/main/java/calculator/Application.java index 573580fb40..05ac9b81e4 100644 --- a/src/main/java/calculator/Application.java +++ b/src/main/java/calculator/Application.java @@ -1,7 +1,56 @@ package calculator; +import camp.nextstep.edu.missionutils.Console; +import java.util.regex.Pattern; +import java.util.regex.Matcher; +import java.util.Arrays; + + public class Application { + public static void main(String[] args) { - // TODO: 프로그램 구현 + // 총합 int 변수 선언 + int sum = 0; + + // Regex로 활용할 String 선언 + String regexDefault = "^[1-9]\\d*([,:]+[1-9]\\d*)*$"; + String regexCustom = "^\\/\\/.+\\\\n[1-9]\\d*(.+[1-9]\\d*)*$"; + + // 인풋 입력받기 + System.out.println("덧셈할 문자열을 입력해 주세요."); + String input = Console.readLine(); + + // 유효한 입력값인지 확인 + // 첫번째 if문은 더하려는 수가 양의 정수이고 쉼표 또는 콜론을 구분자로 가지는 경우 + // 두번째 if문은 더하려는 수가 양의 정수이고 커스텀 구분자를 가지는 경우 + // 마지막 else는 잘못된 입력값이 입력된 경우 + if (Pattern.matches(regexDefault, input)) { + String[] nums = input.split(",|:"); + + for (String num : nums) { + sum += Integer.parseInt(num); + } + + } else if (Pattern.matches(regexCustom, input)) { + String regexDelimiter = "^\\/\\/(.*?)\\\\n(.*)$"; + Pattern.matches(regexDelimiter, input); + Pattern pattern = Pattern.compile(regexDelimiter); + Matcher matcher = pattern.matcher(input); + + if (matcher.find()) { + String customDelimiter = matcher.group(1); + String searchText = matcher.group(2); + String[] nums = searchText.split(customDelimiter); + + for (String num : nums) { + sum += Integer.parseInt(num); + } + } + } else { + throw new IllegalArgumentException("Invalid Input."); + } + + // 결과 출력 + System.out.println("결과 : " + sum); } }