State.java

package ch.hslu.exercises.sw12.ex7;

public enum State {
    Z0 {
        @Override
        State next(Character c) {
            if (c == '0') {
                return Z1;
            } else {
                return Illegal;
            }
        }
    },
    Z1 {
        @Override
        State next(Character c) {
            if (c == '1') {
                return Z2;
            } else {
                return Illegal;
            }
        }
    },
    Z2 {
        @Override
        State next(Character c) {
            if (c == '1') {
                return Z3;
            } else if (c == '0') {
                return Z4;
            } else {
                return Illegal;
            }
        }
    },
    Z3 {
        @Override
        State next(Character c) {
            if (c == '1') {
                return Z2;
            } else {
                return Illegal;
            }
        }
    },
    Z4 {
        @Override
        State next(Character c) {
            if (c == '1') {
                return Z2;
            } else {
                return Illegal;
            }
        }
    },
    Illegal {
        @Override
        State next(Character c) {
            return Illegal;
        }
    };

    abstract State next(Character c);
}