While 공부를 하면서 단순히 더하기만 하는 계산기는 ``` Scanner s = new Scanner(System.in); long sum = 0; int a = s.nextInt(); while( a != 0) { sum += a; a = s.nextInt(); } System.out.println(sum); ``` 이렇게 만들었는데 콘솔창에 연산자까지 띄우면서 반복하는 계산기를 만드는 법을 모르겠습니다. 기존에 만든 형식에서 switch를 넣어서 연산자를 넣으려 했는데 첫번째 수만 반복해서 더해지더군요 ex ) 1 + 2 - 3 * 4 + 0 하는데 1 + 1 + 1 + ..... 값이 나와서 어떻게 하는지 모르겠습니다.
## 콘솔 계산기 아래와 같은 수식을 입력받아 결과를 출력하려면 어떻게 해야할까요? ``` 1 + 2 - 3 * 4 + 0 => -9 ``` 안타깝게도 위와 같은 계산기는 입문자로서는 구현하기 힘든 프로그램입니다. :( 아래와 같이 난이도를 낮추어 도전해보세요. : ``` 1 + 2 => 3 9 - 4 => 5 3 * 7 => 21 15 / 3 => 5 ```
사칙연산을 무시하고 왼쪽에서부터 계산이 되게 while문안에 switch(op.charAt(0)) { case '+': result = a + b; System.out.println(result); break; case '-': result = a - b; System.out.println(result); break; case '*': result = a * b; System.out.println(result); break; case '/': result = a / b; System.out.println(result); break; case '%': result = a % b; System.out.println(result); break; default: System.out.println("입력 오류입니다!"); 이런 걸 이용해서 만들 순 없는 구조인가요??
## 계산기 만들기 연산자 우선순위가 적용되지 않고, 왼쪽에서 오른쪽으로 계산되는 경우엔 도전해 볼만 하겠습니다. ## 프로그램 동작 예 ``` 4 - 9 => -5 * 3 => -15 + 100 => 85 / 5 => 17 - 8 => 9 ``` ## 코드 예 ``` public class MyCalculator { public static void main(String[] args) { Scanner input = new Scanner(System.in); int result = 0; String op = ""; int count = 0; while (input.hasNext()) { if (count % 2 == 0) { if (count == 0) { result = input.nextInt(); } else { result = operation(result, input.nextInt(), op); System.out.printf(" => %d\n", result); } } else { op = input.next(); } count++; } } public static int operation(int a, int b, String op) { switch (op) { case "+": return a + b; case "-": return a - b; case "*": return a * b; case "/": return a / b; default: return 0; } } } ```