Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript switch 문으로 구현하는 문자열 기반 사칙연산 계산기

문자열 형태의 수식을 입력받아 결과를 반환하는 JavaScript 함수를 작성해야 한다고 가정해 보겠습니다. 입력되는 문자열은 다음과 같은 형태입니다.

"4 add 6"
"6 divide 7"
"23 modulo 8"

즉, 문자열의 양쪽에는 두 개의 숫자가 위치하고, 그 사이에는 연산을 나타내는 키워드가 들어갑니다.

지원하는 연산자

가운데 위치한 연산 키워드는 아래 다섯 가지 중 하나입니다.

"add", "divide", "multiply", "modulo", "subtract"

각각 더하기, 나누기, 곱하기, 나머지, 빼기를 의미하며, 함수는 해당 연산을 수행한 후 올바른 결과값을 반환해야 합니다.

구현 예제

switch 문을 활용하면 각 연산을 깔끔하게 분리하여 처리할 수 있습니다. 먼저 split(" ")으로 문자열을 공백 기준으로 잘라 숫자와 연산자를 분리하고, 이후 각 case에 맞는 계산을 수행합니다.

const problem = "3 add 16";
const calculate = opr => {
    const [num1, operation, num2] = opr.split(" ");
    switch (operation) {
        case "add":
            return +num1 + +num2;
        case "divide":
            return +num1 / +num2;
        case "subtract":
            return +num1 - +num2;
        case "multiply":
            return +num1 * +num2;
        case "modulo":
            return +num1 % +num2;
        default:
            return 0;
    }
}
console.log(calculate(problem));

여기서 주목할 점은 +num1, +num2처럼 단항 덧셈 연산자(+)를 사용해 문자열을 숫자로 변환했다는 것입니다. split()의 결과는 항상 문자열 배열이므로, 이 변환 과정 없이는 + 연산 시 문자열이 서로 붙어버리는 오류가 발생할 수 있습니다.

또한 default 블록에서 알 수 없는 연산자가 들어올 경우 0을 반환하도록 처리하여, 잘못된 입력에 대한 방어 코드 역할도 함께 하고 있습니다.

실행 결과

위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.

19

"3 add 16"은 3 + 16을 의미하므로 정확히 19가 출력되는 것을 확인할 수 있습니다.