Java Swing;выбрать между оператором if или do-while? - PullRequest
0 голосов
/ 15 апреля 2011

У меня есть счетчик, который считает до 4 в цикле. и счетчик, который подсчитывает, сколько из этих циклов прошло.

В моем коде ниже обе метки устанавливают значение true для счетчика 1. Но я хочу, чтобы label1 появился на счетчике 1, а label2 на счетчике 2.

Мой вопрос к вам;

Что более эффективно, чтобы метки были видны только для операторов if или можно ли использовать операторы do-while несколько раз?

class counters2 implements ActionListener
{
    int count = 0, alternativecounter = 0;
    public void actionPerformed(ActionEvent e)
    {
        int fakeSecond = (count++ % 4) + 1;
        if(fakeSecond == 1)
        {
            alternativecounter += 1;
            if(alternativecounter == 3)
            {
                do
                {
                    label1.setVisible(true);
                }while(count == 1);
                do
                {
                    label2.setVisible(true);
                }while(count == 2);
            }
        }
    }
}

Ответы [ 3 ]

4 голосов
/ 15 апреля 2011

A do while предназначено для циклов - то есть для многократного выполнения кода.Вы заметили, что если alternativecounter равно 3, код входит в бесконечный цикл?Кроме того, тело do while всегда выполняется хотя бы один раз, , поэтому (без учета бесконечного цикла) этот код неверен.

Если код для цикла вы пытаетесь выполнитьусловное выполнение не должно выполняться более одного раза (и здесь ясно, что оно действительно не должно), использовать оператор if.


Как уже говорили другиеЭто также нелепый способ оптимизировать ваш код - это преждевременная оптимизация и микрооптимизация .

2 голосов
/ 15 апреля 2011

Слушатель событий должен обрабатывать только одно событие. Поэтому во время события вы проверяете состояние своей переменной и затем выполняете соответствующую обработку.

Так что вы бы никогда не использовали do / while. На самом деле в вашем размещенном коде вы ввели бесконечный цикл. Этот бесконечный цикл, в свою очередь, остановит графический интерфейс, поскольку он не сможет отвечать на другие события.

2 голосов
/ 15 апреля 2011

Ваш код в том виде, в котором он написан, либо не будет выполнять do / while, либо приведет к бесконечному циклу, если он это сделает.Не беспокойтесь об эффективности, а работайте над тем, чтобы сделать этот код читабельным и правильным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...