Как написать калькулятор в стиле ООП?

Нужно написать простейший калькулятор в стиле ООП. Это учебная задачка и хочу задаться вопросом, правильно ли я написал свой код? Хотелось бы по меньше процедурного кода. Сделал реализацию, но не нравится формат кода.
import java.util.Scanner;

public class Calculator {
    private final int precision;

    public Calculator(int precision) {
        this.precision = precision;
    }

    public double add(double a, double b) {
        return a + b;
    }

    public double subtract(double a, double b) {
        return a - b;
    }

    public double multiply(double a, double b) {
        double result = a * b;
        double scale = Math.pow(10.0, precision);
        return Math.round(result * scale) / scale;
    }

    public double div(double a, double b) {
        double result = a / b;
        if (b == 0) {
            return result;
        } else {
            double scale = Math.pow(10.0, precision);
            return Math.round(result * scale) / scale;
        }
    }

    public void calculateNumbers(){
        Scanner scanner = new Scanner(System.in);
        Calculator calculator = new Calculator(2);
        System.out.println("Enter the first number: ");
        double inputFirstNumber = scanner.nextDouble();
        System.out.println("Enter the second number: ");
        double inputSecondNumber = scanner.nextDouble();
        System.out.println("Enter operator (+, -, *, /):");
        char operation = scanner.next().charAt(0);
        while (true){
            switch (operation){
                case '+':
                    System.out.println("Result: " + calculator.add(inputFirstNumber, inputSecondNumber));
                    break;
                case '-':
                    System.out.println("Result: " + calculator.subtract(inputFirstNumber, inputSecondNumber));
                    break;
                case '*':
                    System.out.println("Result: " + calculator.multiply(inputFirstNumber, inputSecondNumber));
                    break;
                case '/':
                    System.out.println("Result: " + calculator.div(inputFirstNumber, inputSecondNumber));
                    break;
                default:
                    System.out.println("Not a correct character");
            }
            System.out.println("Do you want to continue? (Y/N)");
        }
    }
}


public class Application {
    public static void main(String[] args) {
        Calculator calculator = new Calculator(2);
        calculator.calculateNumbers();
    }
}
  • Вопрос задан
  • 427 просмотров
Решения вопроса 1
leahch
@leahch
Я мастер на все руки, я козлик Элек Мэк :-)
Изучите шаблон builder - https://habr.com/ru/post/244521/
Изучите шаблон chain of responsibility и command https://habr.com/ru/post/538954/
Совместите все вместе и получите калькулятор.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Сбер Москва
от 150 000 до 320 000 ₽
Сбер Москва
от 200 000 до 260 000 ₽
Сбер Вологда
от 65 000 ₽
06 дек. 2021, в 21:20
8000 руб./за проект
06 дек. 2021, в 20:48
750 руб./в час
06 дек. 2021, в 20:39
2000 руб./в час