Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,11 @@
# javascript-calculator-precourse
📝 기능 목록

[V] 빈 문자열 또는 null 값을 입력할 경우 0을 반환한다.

[V] 쉼표(,) 또는 콜론(:)을 구분자로 가지는 문자열의 합을 계산한다.

[V] 커스텀 구분자를 지정하여 문자열의 합을 계산한다.

[V] 입력값에 숫자가 아닌 값 또는 음수가 포함된 경우 에러를 발생시킨다.

[V] 사용자로부터 입력을 받아 결과를 출력하는 UI를 구현한다.
39 changes: 38 additions & 1 deletion src/App.js
Original file line number Diff line number Diff line change
@@ -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;
42 changes: 42 additions & 0 deletions src/tempCodeRunnerFile.js
Original file line number Diff line number Diff line change
@@ -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;