Калькулятор swing / awt gcd

Мне нужно создать калькулятор в java swing / awt, который вычисляет разные функции.

Например, необходимо вычислить GCD.
Сначала я создал пользовательский интерфейс, а затем функцию actionPerformed, но когда я выполняю функцию gcd в графическом интерфейсе, экран зависает.

calculate2.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            // Get values from text fields
            try {
                int a = Integer.parseInt(input1.getText());
                int b = Integer.parseInt(input2.getText());
                while (a != b) {
                    if (a > b)
                        a = a - b;
                    else
                        a = b - a;
                }

                String result1 = "" + (b);
                result.setText((result1));
            } catch (Exception f) {
                JOptionPane.showMessageDialog(rootPane, "ERROR: " + (f.getMessage()));
            }

            String aField = input1.getText();
            String bField = input2.getText();

            if (e.getSource() == calculate2) {

                if ("".equals(aField) || "".equals(bField)) {
                    String emptyFieldWarning;
                    emptyFieldWarning = "One or more fields is/are empty!";
                    JOptionPane.showMessageDialog(rootPane, emptyFieldWarning);
                }
            }
        }
    });

Графический интерфейс зависает, потому что в какой-то момент вы застряли в своей функции. И, как предположил @JanDeKock, я думаю, что у вас есть ошибка в вашем цикле while (см. Его ответ).

Benjamin J. 13.01.2019 14:25
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
49
1

Ответы 1

В цикле while в ветке else должен быть оператор b = b - a.

Другие вопросы по теме