examples/src/main/java/model/Calculator.java
2026-07-30 14:11:15 +03:00

69 lines
2.1 KiB
Java

package model;
public class Calculator {
public static String execute(String[] params) {
String operator = params[0];
double value1;
double value2;
// todo: доработать код, чтобы все негативные тесты проходили успешно
//value1 = Double.parseDouble(params[1]);
//value2 = Double.parseDouble(params[2]);
value1 = validDouble(params[1]);
value2 = validDouble(params[2]);
double result = calculate(operator, value1, value2);
if (result > Integer.MAX_VALUE || result < Integer.MIN_VALUE) {
throw new CalculatorException("Превышен порог значений");
}
return String.valueOf(result);
}
private static double calculate(String operator, double a, double b) {
if (operator == null) {
throw new CalculatorException("Оператор не может быть null");
}
switch (operator) {
case "+":
return add(a, b);
case "-":
return subst(a, b);
case "*":
return mult(a, b);
case "/":
return div(a, b);
}
throw new CalculatorException("Неизвестный оператор");
}
private static double add(double a, double b) {
return a + b;
}
private static double subst(double a, double b) {
return a - b;
}
private static double div(double a, double b) {
if (b == 0) {
throw new CalculatorException();
}
return a / b;
}
private static double mult(double a, double b) {
return a * b;
}
private static double validDouble (String number) throws CalculatorException{
if (number == null) {
throw new CalculatorException("Число не может быть null");
}
try{
return Double.parseDouble(number);
}
catch (NumberFormatException e){
throw new CalculatorException("Некорректное число: " + number, e);
}
}
}