Skip to content

seahkeem/javascript-calculator-8

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

javascript-calculator-precourse

입력한 문자열에서 숫자를 추출하여 더하는 계산기를 구현한다.

구현할 기능 목록

1. 입력 처리

  • 입력 요청: 사용자로부터 구분자와 양수로 구성된 문자열을 입력받는다.
  • 예외 처리: 빈 문자열("")을 입력받는 경우 0을 반환한다.

2. 구분자 확인 및 추출

  • 커스텀 구분자 확인: 입력이 //로 시작하면 //{구분자}\n{값} 형식을 검증한다.
  • 구분자 추출: 커스텀 구분자를 추출하거나 기본 구분자(, 또는 :)를 반환한다.
  • 오류 처리: 선언 형식이 잘못된 경우 [ERROR] 커스텀 구분자 선언이 불완전합니다 출력 후 프로그램을 종료한다.
  • 오류 처리: 커스텀 구분자가 공백이거나 여러 문자이거나 숫자이거나 소수점인 경우 [ERROR] 유효하지 않은 커스텀 구분자입니다 출력 후 프로그램을 종료한다.

3. 문자열 분리 및 토큰화

  • 문자열 분리 실행: 추출된 구분자를 기준으로 문자열을 분리하여 숫자 토큰 리스트를 반환한다.

4. 숫자 변환 및 검증

  • 숫자 변환 및 검증: 모든 토큰을 숫자로 변환하며 각 토큰이 숫자 형식인지 검사한다.
    • 오류 처리: 숫자가 아닌 문자가 포함된 경우 [ERROR] 숫자 형식이 아닙니다: '{토큰}' 출력 후 프로그램을 종료한다.
    • 오류 처리: 음수(-1, -2 등)가 포함된 경우 [ERROR] 음수는 허용되지 않습니다: '{토큰}' 출력 후 프로그램을 종료한다.
  • 예외 처리: 연속 구분자 등(1,,2)으로 인해 발생한 빈 문자열("") 토큰은 0으로 처리한다.
  • 예외 처리: 공백(" ")만 있는 토큰은 0으로 처리한다.
  • 예외 처리: "000" 등 연속된 0은 0으로 인식한다.
  • 합산 준비: 검증을 통과한 숫자들을 반환한다

5. 합산 로직

  • 값 처리: 검증된 숫자들을 모두 더하여 합계를 구한다.
  • 예외 처리: 0은 덧셈에 영향을 주지 않는다.

6. 결과 출력

  • 결과 출력: 결과 : {합} 형태로 출력한다.
  • 오류 출력: [ERROR] {메시지} 출력 후 프로그램을 종료한다.

에러 및 예외 처리 목록

구분 상황 처리 방식
[ERROR] 구분자 사이에 숫자가 아닌 문자가 포함된 경우 (1,a,3) [ERROR] 숫자 형식이 아닙니다: 'a'
[ERROR] 구분자 사이에 음수가 포함된 경우 (1,-2,3) [ERROR] 음수는 허용되지 않습니다: '-2'
[ERROR] 커스텀 구분자 선언이 불완전한 경우 (//[구분자]\n 형식 위반) [ERROR] 커스텀 구분자 선언이 불완전합니다
[ERROR] 커스텀 구분자가 공백인 경우(//\n)
커스텀 구분자가 여러 문자인 경우(//ab\n)
커스텀 구분자가 숫자인 경우(//1\n)
커스텀 구분자가 소수점인 경우(//.\n)
[ERROR] 유효하지 않은 커스텀 구분자입니다
[예외처리] 구분자가 연속적으로 등장하는 경우 (1,,2) 0으로 처리
[예외처리] 구분자 사이에 공백이 등장하는 경우 (1, ,3) 0으로 처리
[예외처리] (*)구분자 사이에 0이 등장하는 경우 (1,0,3, 1,000,3) 0으로 처리
[예외처리] 전체 문자열이 비어있는 경우 ("") 0을 반환

(*) 구분자와 양수로 구성된 문자열임에도 0을 다루는 이유

  • (프로그래밍) 숫자 변환 관습상 연속적인 0(ex. 000)은 0으로 처리
  • (일관성) 구분자 사이에 아무것도 없는 빈 문자열을 0으로 처리하는 규칙 존재
  • (실용성) 계산기에서 0은 덧셈에 영향을 끼치지 않음

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%