-
Notifications
You must be signed in to change notification settings - Fork 151
Expand file tree
/
Copy pathJavaCalculator.java
More file actions
40 lines (35 loc) · 1.18 KB
/
JavaCalculator.java
File metadata and controls
40 lines (35 loc) · 1.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package com.programmers.engine;
import com.programmers.engine.module.BasicCalculator;
import com.programmers.engine.io.Input;
import com.programmers.engine.io.Output;
import com.programmers.engine.model.Menu;
import com.programmers.engine.model.ResultManager;
import lombok.AllArgsConstructor;
@AllArgsConstructor
public class JavaCalculator implements Runnable{
private final Input input;
private final Output output;
private final ResultManager resultManager;
private final BasicCalculator bc;
@Override
public void run() {
while (true) {
output.showMenu();
Menu menu = Menu.matchMenu(input.selectMenu());
switch (menu) {
case LOOK_UP -> output.readAllResults(resultManager.readAllResults());
case CALCULATE -> calculate();
case EXIT -> {
return;
}
default -> output.inputError();
}
}
}
private void calculate() {
String expression = input.getExpression();
int answer = bc.doCalculate(expression);
output.printAnswer(answer);
resultManager.save(expression, answer);
}
}