-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Expand file tree
/
Copy pathStringCalculator.java
More file actions
45 lines (37 loc) · 1.25 KB
/
StringCalculator.java
File metadata and controls
45 lines (37 loc) · 1.25 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
41
42
43
44
45
package calculator;
public class StringCalculator {
public static int calculate(String input) {
validateNotBlank(input);
String[] values = input.split(" ");
return calculate(values);
}
private static void validateNotBlank(String input) {
if (input == null || input.isEmpty()) {
throw new IllegalArgumentException("Input cannot be null or empty");
}
}
private static int calculate(String[] values) {
int result = Integer.parseInt(values[0]);
for (int i = 1; i < values.length; i++) {
String operation = values[i];
i++;
int number = Integer.parseInt(values[i]);
result = calculate(result, operation, number);
}
return result;
}
private static int calculate(int number1, String operation, int number2) {
switch (operation) {
case "+":
return number1 + number2;
case "-":
return number1 - number2;
case "*":
return number1 * number2;
case "/":
return number1 / number2;
default:
throw new IllegalArgumentException("Invalid operation: " + operation);
}
}
}