Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[문자열 덧셈 계산기] 조원영 미션 제출합니다. #582

Open
wants to merge 20 commits into
base: main
Choose a base branch
from

Conversation

WONYOUNG-HC
Copy link

@WONYOUNG-HC WONYOUNG-HC commented Oct 21, 2024

javascript-calculator-precourse

기능 요구 사항

  • 문자열을 입력받아 숫자를 추출해서 더하는 계산기 구현
  • 기본 구분자 : (,), (:)
  • 구분자를 기준으로 숫자를 분리하고, 각 숫자의 합을 계산
  • 문자열 앞부분 "//"와 "\n" 사이에 커스텀 구분자를 입력하여 구분자 추가 가능
  • 사용자가 잘못된 값을 입력하는 경우 "[ERROR]"로 시작하는 메시지와 함께 ERROR를 발생시키고 종료

구현 기능 목록

  • 문자열 입력 처리
  • 커스텀 구분자를 인식하여 기본 구분자에 추가
  • 문자열을 구분자 단위로 분리
  • 분리된 문자열을 숫자로 변환
  • 문자열로 변환된 숫자들을 계산
  • 계산된 값을 출력
  • 잘못된 입력에 대해 에러 처리
    • 예외 상황
    • 문자열에 구분자 이외에 숫자가 아닌 문자가 입력된 경우
    • 처리 불가능할 정도로 큰 숫자가 입력된 경우
    • 숫자로 음수가 입력된 경우
    • 커스텀 구분자 입력이 올바르게 되지 않은 경우

기능 명세 이외 판단 사항

  • 빈 문자열에 대한 입력 : 0으로 판단
    • 입력이 ""인 경우 -> 0으로 출력
    • ":3:"과 같이 구분자 이전으로 빈 문자열이 들어온 경우 -> 0 + 3 + 0 = 3으로 계산
  • 커스텀 구분자의 개수 : 여러개의 커스텀 구분자 사용 가능
    • "//;-\n"과 같이 입력되면 기본 구분자를 포함해 구분자가 (,), (:), (;), (-)과 같이 총 4개로 구분 가능
  • 실수에 대한 처리
    • 실수 입력도 허용
    • 단 커스텀 구분자로 (.)이 입력된 경우 (.)은 구분자로 사용되므로 실수 입력이 아닌 두 정수로 구분됨

- InputProcessor 클래스에서 콘솔로 부터 문자열을 입력 받음
- constant.js에 출력될 문자열들을 선언
- 문자열을 기본 구분자를 통해서 구분
- DelimiterHandler 클래스에서 기본 구분자와 추출한 커스텀 구분자를 처리
- constant.js에 구분자 상수 추가
- 구분자로 분리된 문자들을 계산
- 출력 기능 추가
- InputProcessor에서 IOProcessor로 클래스명 변경
- 클래스에서 입력 뿐만 아닌 출력 기능까지 포함
- 계산된 반환값을 number 타입에서 string 타입으로 변환
- IOProcessor에서 계산된 값을 출력하는 함수 구현
- 문자열에 숫자나 구분자 이외의 문자가 입력된 경우에 대한 처리
- 커스텀 구분자에 대한 예외 항목 추가
- //으로 시작했지만, \n으로 끝나지 않은 경우에 대한 처리
- try 문으로 인한 변수 스코프 문제 해결
- Number.MAX_SAFE_INTEGER를 초과한 경우에 대한 처리
- 문자열 배열에 대한 변수명 변경
- 커스텀 구분자 명령문이 들어왔지만 구분자가 없는 경우에 대한 처리
- 숫자로 음수가 입력되는 경우 잘못된 구분자로 판단
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant