package com.smart.fsm.phonebank; public class FSM { static State[][] transTable=new State[State.values().length][10]; static{ transTable[State.start.ordinal()][1]=State.chinese; transTable[State.start.ordinal()][2]=State.english; transTable[State.chinese.ordinal()][0]=State.end; transTable[State.english.ordinal()][0]=State.end; } State current=State.start; State step(State s,char c){ current=transTable[s.ordinal()][c-'0']; return current; } public static void main(String[] args) { FSM fsm=new FSM(); System.out.println(fsm.step(fsm.current,'1')); System.out.println(fsm.step(fsm.current,'0')); } }
package com.smart.fsm.phonebank; public enum State { start, chinese, english, end }