Тройные ворота обработке - более сжатой форме то кучу операторов if


У меня есть классы, представляющие ворота (или, XOR и т. д.) С следующий метод, который вызывается, когда свойство изменяется.

Вот код XORGate:

public void computeOutput() {
        if (this.input1 != null && this.input0 != null) {
            if (this.input0.getValue() || this.input1.getValue()) {
                if (this.input0.getValue() && this.input1.getValue()) {
                    this.output.setValue(false);
                }
                else {
                    this.output.setValue(true);
                }

            } else {
                this.output.setValue(false);
            }
        }
        else {
            this.output.Value = false;
        }

    }

Это ужасно, но я не могу придумать лучшего. Он работает следующим образом:

Если какой-либо из входов нуль, рассматривать выход как ложные. Если любой из входов истина, но не все результаты являются достоверными (я.е всего это правда), установить выходное значение true. Если обе входные клеммы правда, вывод является ложным. И наконец, если ни один из входных верно, вывод является ложным.

Очень базовые вещи.



271
5
задан 10 сентября 2011 в 11:09 Источник Поделиться
Комментарии
1 ответ

public void computeOutput() {
output.setValue(
(input1 == null || input0 == null)
? false
: (input0.getValue() ^ input1.getValue()));
}

4
ответ дан 11 сентября 2011 в 09:09 Источник Поделиться