diff --git a/README.md b/README.md index 13420b29..5012575b 100644 --- a/README.md +++ b/README.md @@ -1 +1,11 @@ -# javascript-calculator-precourse \ No newline at end of file +πŸ“ κΈ°λŠ₯ λͺ©λ‘ + +[V] 빈 λ¬Έμžμ—΄ λ˜λŠ” null 값을 μž…λ ₯ν•  경우 0을 λ°˜ν™˜ν•œλ‹€. + +[V] μ‰Όν‘œ(,) λ˜λŠ” 콜둠(:)을 κ΅¬λΆ„μžλ‘œ κ°€μ§€λŠ” λ¬Έμžμ—΄μ˜ 합을 κ³„μ‚°ν•œλ‹€. + +[V] μ»€μŠ€ν…€ κ΅¬λΆ„μžλ₯Ό μ§€μ •ν•˜μ—¬ λ¬Έμžμ—΄μ˜ 합을 κ³„μ‚°ν•œλ‹€. + +[V] μž…λ ₯값에 μˆ«μžκ°€ μ•„λ‹Œ κ°’ λ˜λŠ” μŒμˆ˜κ°€ ν¬ν•¨λœ 경우 μ—λŸ¬λ₯Ό λ°œμƒμ‹œν‚¨λ‹€. + +[V] μ‚¬μš©μžλ‘œλΆ€ν„° μž…λ ₯을 λ°›μ•„ κ²°κ³Όλ₯Ό 좜λ ₯ν•˜λŠ” UIλ₯Ό κ΅¬ν˜„ν•œλ‹€. diff --git a/src/App.js b/src/App.js index 091aa0a5..c2017d3c 100644 --- a/src/App.js +++ b/src/App.js @@ -1,5 +1,42 @@ +import { Console } from '@woowacourse/mission-utils'; + class App { - async run() {} + _calculate(text){ + if(!text){ + return 0; + } + let delimiter=/[,\:]/; + let numberString=text; + + const customDelimiter=text.match(/^\/\/(.)\n(.*)/s); + if(customDelimiter){ + delimiter=new RegExp(customDelimiter[1]); + numberString=customDelimiter[2]; + } + + const numbers = numberString.split(delimiter).map(Number); + const sum=numbers.reduce((sum,num)=>{ + if(isNaN(num)){ + throw new Error('[ERROR] μœ νš¨ν•˜μ§€ μ•Šμ€ μˆ«μžκ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€'); + } + if (num < 0) { + throw new Error('[ERROR] μŒμˆ˜λŠ” μž…λ ₯ν•  수 μ—†μŠ΅λ‹ˆλ‹€'); + } + return sum+num; + },0); + return sum; + } + + async run() { + try { + const input = await Console.readLineAsync('λ§μ…ˆν•  λ¬Έμžμ—΄μ„ μž…λ ₯ν•΄ μ£Όμ„Έμš”.\n'); + const result = this._calculate(input); + Console.print(`κ²°κ³Ό : ${result}`); + } catch (error) { + Console.print(error.message); + throw error; + } + } } export default App; diff --git a/src/tempCodeRunnerFile.js b/src/tempCodeRunnerFile.js new file mode 100644 index 00000000..a8a8430b --- /dev/null +++ b/src/tempCodeRunnerFile.js @@ -0,0 +1,42 @@ +import { Console } from '@woowacourse/mission-utils'; + +class App { + _calculate(text){ + if(!text){ + return 0; + } + let delimiter=/[,\:]/; + let numberString=text; + + const customDelimiter=text.match(/^\/\/(.)\n(.*)/s); + if(customDelimiter){ + delimiter=new RegExp(customDelimiter[1]); + numberString=customDelimiter[2]; + } + + const numbers = numberString.split(delimiter).map(Number); + const sum=numbers.reduce((sum,num)=>{ + if(isNaN(num)){ + throw new Error('[ERROR] μœ νš¨ν•˜μ§€ μ•Šμ€ μˆ«μžκ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€'); + } + if (num < 0) { + throw new Error('[ERROR] μŒμˆ˜λŠ” μž…λ ₯ν•  수 μ—†μŠ΅λ‹ˆλ‹€'); + } + return sum+num; + },0); + return sum; + } + + async run() { + try { + const input = await Console.readLineAsync('λ§μ…ˆν•  λ¬Έμžμ—΄μ„ μž…λ ₯ν•΄μ£Όμ„Έμš”.\n'); + const result = this._calculate(input); + Console.print(`κ²°κ³Ό : ${result}`); + } catch (error) { + Console.print(error.message); + throw error; + } + } +} + +export default App;