我有一个场景,我设计了 NFA 并使用 JFLAP 将其转换为 DFA。
我需要知道如何用 Java 编写它?
基本上如何在 Java 中实现这些状态转换。我见过一些使用 switch 和 if 语句执行此操作的示例,但我看不到与 DFA/NFA 设计以及如何使用它在 Java 中实现的任何关系。
最佳答案
如果你想使用更面向对象的设计而不是 while(true)switch(state){...}
public class State{
private Map<Character,State> transitions=new HashMap<Character,State>();
public void addTransition(char ch,State st){
transitions.put(ch,st);
}
public State next(char ch){
return transitions.get(ch);
}
private boolean fin=false;
public boolean isFinal(){return fin;}
public boolean setFinal(boolean f){fin=f;}
}
然后循环将是
State currState=startState;
while(currState!=null && input.hasNextChar()){//you can also end directly when final state is reached
char next = input.nextChar();//get next character
currState = currState.next(next);
}
if(currState!=null && currState.isFinal()){
// reached final state
}else{
// to bad didn't match
}
关于java - 如何将 NFA/DFA 转换为 java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7768759/