Я хочу создать бесконечный автомат с разными состояниями, используя два атрибута enum для состояний автомата и ввода. Метод изменения состояния, предоставляемый текущим состоянием и входом, не работает так, как я планировал.
Я понимаю, что мог бы использовать оператор SwitchCase, но это сильно раздуло бы код.
Мой код:
public enum state {StandBy, Off, Err, Working};
public enum input {1, 2};
private static state changetable [][]
= {
{state.Working, state.Off, state.Err, state.Err},
{state.Err, state.StandBy, state.Err, state.Working}
};
/* table overwiev
Input| Off, Working, Error, StandBy
1 | Working, Off, Err, Error
2 | Error, StandBy, Error, Working
*/
public input statchange(state state_now, input inp){
return changetable[inp.ordinal()][stat_now.ordinal()];
}
Что я ожидаю:
state_now должен перейти в новое состояние с учетом ввода.
Результат:
"Требуется: вход, найдено: состояние"