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 + ..... 값이 나와서 어떻게 하는지 모르겠습니다.
sehongpark님의 답변
## 콘솔 계산기
아래와 같은 수식을 입력받아 결과를 출력하려면 어떻게 해야할까요?
```
1 + 2 - 3 * 4 + 0 => -9
```
안타깝게도 위와 같은 계산기는 입문자로서는 구현하기 힘든 프로그램입니다. :(
아래와 같이 난이도를 낮추어 도전해보세요. :
```
1 + 2
=> 3
9 - 4
=> 5
3 * 7
=> 21
15 / 3
=> 5
```
jjm2947님의 답변
사칙연산을 무시하고 왼쪽에서부터 계산이 되게 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("입력 오류입니다!");
이런 걸 이용해서 만들 순 없는 구조인가요??
sehongpark님의 답변
## 계산기 만들기
연산자 우선순위가 적용되지 않고, 왼쪽에서 오른쪽으로 계산되는 경우엔 도전해 볼만 하겠습니다.
## 프로그램 동작 예
```
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;
}
}
}
```