camp.nextstep.edu.missionutils에서 제공하는Console API를 사용하여 구현
사용자가 입력하는 값은camp.nextstep.edu.missionutils.Console의readLine()을 활용
Git의 커밋 단위는 README.md에 정리한 기능 목록 단위로 추가
- JDK 21 버전에서 실행 가능해야 한다.
- 프로그램 실행의 시작점은 Application의 main()이다.
- build.gradle 파일은 변경할 수 없으며, 제공된 라이브러리 이외의 외부 라이브러리는 사용하지 않는다.
- 프로그램 종료 시 System.exit()를 호출하지 않는다.
- 프로그래밍 요구 사항에서 달리 명시하지 않는 한 파일, 패키지 등의 이름을 바꾸거나 이동하지 않는다.
- 자바 코드 컨벤션을 지키면서 프로그래밍한다.
- 기본적으로 Java Style Guide를 원칙으로 한다.
-
계산기의 실행 문구를 출력하는 기능
- 포맷:
덧셈할 문자열을 입력해주세요.
- 포맷:
-
계산기의 실행 결과 문구를 출력하는 기능
- 포맷:
결과 : %s
- 포맷:
-
출력 형식
덧셈할 문자열을 입력해 주세요.
<사용자가 입력한 값>
결과 : <덧셈 결과>
- 사용자가 텍스트를 입력하는 기능
- 문자열이 띄어쓰기로만 이루어진 경우
IllegalArgumentException을 발생시킨다.- 예 1) " "
- 입력된 문자열의 숫자가 1개인 경우 그대로 출력
- 구분된 문자열을 통해 합을 계산하는 기능
- 분리한 후의 값이 자료형의 범위 내에 있는지 확인한다.
- int: -2,147,483,648 ~ 2,147,483,647
- long: -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
- double: 1.79E-308(-1.7910^308) ~ 1.79E+308(1.7910^308) (15digits)
- 덧셈을 하고 난 결과값이 자료형의 범위 내에 존재하지 않는 경우
- 예 1) 2,147,483,647 + 2,147,483,647
- 커스텀 구분자가 존재하지 않고,
,와:로 구분된 문자열일 경우 구분자를 기준으로 합을 계산- 예 1) "1,2" -> 1 + 2 -> 3
- 예 2) "1,2:3" -> 1 + 2 + 3 -> 6
- 커스텀 구분자가 존재하지 않고,
,과:를 제외한 다른 문자열이 존재할 경우IllegalArgumentException을 발생시킨다.- 문자열에 띄어쓰기가 들어갈 경우
- 예 1) "1, 2" ->
IllegalArgumentException
- 예 1) "1, 2" ->
- 문자열에 띄어쓰기가 들어갈 경우
- 구분자 및 커스텀 구분자를 저장하는 객체를 선언한다.
- 객체는 Set으로 선언하여 중복을 제거한다.
- 입력한 문자열을 구분자로 분리한다.
- 구분자로 나눈 문자열이 빈 칸일 경우 0으로 저장한다.
- 구분자로 나눈 문자열이 모두 양수인지 확인한다.
- 커스텀 구분자는 구분자를 상속받은 자식 객체로 구성한다.
- 입력한 문자열에 커스텀 구분자가 존재할 경우 구분자와 커스텀 구분자로 문자열을 분리한다.
-
//\n사이에 있는 문자의 경우 커스텀 구분자로 사용한다.- 예 1) "//;\n1;2;3" -> 커스텀 구분자 =
;, 1 + 2 + 3 -> 6
- 예 1) "//;\n1;2;3" -> 커스텀 구분자 =
-
//로 시작해서\n로 닫히지 않고 안의 문자열에//와\n이 포함 되어있는 경우IllegalArgumentException을 발생시킨다.- 예 1) "////;\n3\n"
- 커스텀 구분자는 여러 개 작성할 수 있다.
- 예 1) "// \n//temp\n1temp2 3" -> 커스텀 구분자:
,temp, 1 + 2 + 3 -> 6
- 예 1) "// \n//temp\n1temp2 3" -> 커스텀 구분자:
- 구분자와 양수로 구성된 문자열인지 확인한다.
-
//와\n이 존재하나//가/n보다 뒤에 존재하는 경우IllegalArgumentException을 발생시킨다.- 예 1) "\n;//1;2;3"
- 구분자와 커스텀 구분자 외의 숫자가 아닌 다른 문자가 존재할 경우
IllegalArgumentException을 발생시킨다. - 커스텀 구분자로만 이루어져 있는 경우 0으로 계산한다.
- 예 1) "//#\n" -> 0
- 예 2) "//#\n#" -> 0 + 0 -> 0
- 커스텀 구분자가 비어있는 경우
IllegalArgumentException을 발생시킨다.- 예 1) "//\n1,2,3"
- 커스텀 구분자가 중복된 경우 중복을 제거한 후 저장한다.
- 예 1) "//;\n//!\n//;\n" -> 커스텀 구분자:
;,!
- 예 1) "//;\n//!\n//;\n" -> 커스텀 구분자:
-
IllegalArgumentException을 일으키는 기능
