public class ExorGate extends LogicGate { public ExorGate(int inputnr) { super(inputnr); if (inputnr > 2) throw (new TooManyInputsException()); } public ExorGate(DigitalInput... inputvals) { super(inputvals); if (inputvals.length > 2) throw (new TooManyInputsException()); } @Override public boolean getOutput() { boolean first = getInput(0).getValue(); for (int i = 1; i < getInputNumber(); i++) { if (getInput(i).getValue() != first) return true; // if there is one change return true first = getInput(i).getValue(); } return false; // all values are the same... } }