Как сделать калькулятор с несколькими действиями на Java?

Ребята, как сделать калькулятор, у которого существует несколько действий и где бы умножение/деление выполнялось первым, а сложение/вычитание вторым. На занятиях мы написали такой код, но можно ли его как-то подстроить под несколько действий?
JButton btn;
    JLabel label;
    static JButton lastBtn;

    static double ch1;
    static double ch2;
    double result;

    public Operation(JButton btn, JLabel label) {
        this.btn = btn;
        this.label = label;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        ch2 = Double.valueOf(label.getText());
        switch(btn.getText()){
            case "+":
            case "-":
            case "/":
            case "*":
                lastBtn = btn;
                ch1 = ch2;
                label.setText("0");
                break;
            case "=":
                if(ch2 == 0 && lastBtn.getText().equals("/")){
                    label.setText("На 0 не /");
                }else{
                    switch (lastBtn.getText()){
                        case "+":
                            result = ch1 + ch2;
                            break;
                        case "-":
                            result = ch1-ch2;
                            break;
                        case "*":
                            result = ch1*ch2;
                            break;
                        case "/":
                            result = ch1/ch2;
                            break;
                    }

                    if (result%1 == 0)label.setText(String.valueOf((int)result));
                    else label.setText(String.valueOf(result));
                }
                break;
        }
    }
  • Вопрос задан
  • 600 просмотров
Пригласить эксперта
Ответы на вопрос 2
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Здравствуйте!

я имел в виду то, как подстроить код, который я делал на занятиях под то, чтобы можно было делать несколько действий и соблюдались все правила типо того, что умножение/деление идут первыми, а потом сложение/вычитание идёт.

Тут важный момент заключается в следующем, суммирование или вычитание может быть обрамлено круглыми скобками и соответственно, вам нужно будет выполнить их раньше, чем умножение или деление.
Как по мне, надо принять строку с выражением полность, а далее распарсить ее. Найти в ней скобки и выполнить их содержимое, а затем другие операции
Ответ написан
Комментировать
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Нужно принимать строку, парсить её, и выполнять.
Ключевые фразы для поиска:
Обратная польская запись.
Алгоритм сортировочной станции.
Алгоритм рекурсивного спуска.

Сделать из того кода, который у тебя есть, ничего нельзя, потому что в нём ничего нет.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы