diff --git a/README.md b/README.md index eee9de4..23dc54b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,13 @@ +## 다이어그램 +image + +## 구현 기능 +- [X] 입력을 받았을 경우 사칙연산(+, -, *, /)이 가능해야 한다. + +- [ ] 숫자에 소수를 적용해본다. + +- [ ] 사칙연산 우선순위를 적용한다. + ## 깃허브 **[java-calculator](https://github.com/programmers-lecture/java-calculator)** diff --git a/src/main/java/stringCalculator/Calculator.java b/src/main/java/stringCalculator/Calculator.java new file mode 100644 index 0000000..ca9c30b --- /dev/null +++ b/src/main/java/stringCalculator/Calculator.java @@ -0,0 +1,30 @@ +package stringCalculator; + +import java.util.regex.Pattern; + +public class Calculator { + + private static final Pattern regExp = Pattern.compile("^[0-9]*$"); //operand, operator 구분 용도 + + public int calculate(String[] inputExp){ + + int result = 0; + // 맨처음 숫자 더해짐 + Operator currentOperator = Operator.PLUS; + + for(String input : inputExp){ + if(regExp.matcher(input).find()){ + result = currentOperator.operate(result, Integer.parseInt(input)); + continue; + } + // 연산자 매칭 + for(Operator operator : Operator.values()){ + if(operator.getSymbol().equals(input)){ + currentOperator = operator; + } + } + } + + return result; + } +} diff --git a/src/main/java/stringCalculator/Main.java b/src/main/java/stringCalculator/Main.java new file mode 100644 index 0000000..1fcf0e5 --- /dev/null +++ b/src/main/java/stringCalculator/Main.java @@ -0,0 +1,19 @@ +package stringCalculator; + +import java.util.Scanner; + +public class Main { + + public static void main(String[] args) { + Calculator calculator = new Calculator(); + String[] input = receiveInput(); + int result = calculator.calculate(input); + System.out.println("결과 : " + result); + } + + public static String[] receiveInput() { + Scanner sc = new Scanner(System.in); + String input = sc.nextLine().replaceAll("\\s+", " "); + return input.split(" "); + } +} diff --git a/src/main/java/stringCalculator/Operator.java b/src/main/java/stringCalculator/Operator.java new file mode 100644 index 0000000..ea20344 --- /dev/null +++ b/src/main/java/stringCalculator/Operator.java @@ -0,0 +1,26 @@ +package stringCalculator; + +import java.util.function.BiFunction; + +public enum Operator { + PLUS("+", (first, second) -> first + second), + MINUS("-", (first, second) -> first - second), + MULTIPLY("*", (first, second) -> first * second), + DIVIDE("/", (first, second) -> first / second); + + private String symbol; + private BiFunction operation; + + Operator(String symbol, BiFunction operation) { + this.symbol = symbol; + this.operation = operation; + } + + public String getSymbol(){ return symbol; } + + public int operate(int first, int second) { + return operation.apply(first, second); + } + + +}