I've posted this question before but thought I'd revise it and try with a little more detail. I have this image below. What I am trying to accomplish is start in the even "bubble" and transition from ones and zeros to the other states. Here is what I've accomplished:
1) Create mainMap with all the states (even and odd) as well as another map that correctly has the inputs (0s and 1s) that lead away from that state. 2) Sort the state from even to odd transitions.

Here is my code so far:
public static void main(String[] args) {
//Map<Even, ArrayMap[0->even,1->odd]> for first line
Map<String, Map<String,String>> mainMap = new ArrayMap<String, Map<String,String>>();
//Map<int,even/odd>
TypedBufferReader input = new TypedBufferReader("Enter Finite Automaton Description File: ");
//read the file.
for (;;) {
try {
String line = input.readLine();
StringTokenizer st = new StringTokenizer(line, ";");
String state = st.nextToken();
Map<String,String> transitions = mainMap.get(state);
transitions = new ArrayMap<String, String>();
while (st.hasMoreTokens()) {
String intStateInput = st.nextToken();
String inputState = st.nextToken();
transitions.put(intStateInput, inputState);
}
mainMap.put(state, transitions);
} catch (EOFException e) { break;}
}
//Print in alphabetical order of states. odd/even to even/odd
List<String> mapList = new ArrayList<String>(mainMap.keys());
Collections.sort(mapList);
for (String s : mapList) {
Map<String, String> tempMap = mainMap.get(s);
System.out.println(s + " transitions = " + tempMap.toString());
}
//Process one line file.
TypedBufferReader oneLineInput = new TypedBufferReader("Enter start state/inputs file: ");
try {
String oneLine = oneLineInput.readLine();
StringTokenizer st = new StringTokenizer(oneLine,";");
String initialState = st.nextToken();
System.out.println("Initial state = " + initialState);
while (st.hasMoreTokens()) {
String inputNum = st.nextToken();
}
} catch (EOFException e) {}
}
}
I'm supposed to read a file with one line as follows: "even; 1;0;1;1;0;1" So, it would print the initial state of even and continue moving through the mainMap.
For an initial state of even it would be like this:
initial state = even
input = 1 state = odd
input = 0 state = odd
input = 1 state = even
input = 1 state = odd
input = 0 state = odd
input = 1 state = even
final state = even
Please help me with this problem.
In your loop, you get the transitions linked to your current state name, then get the name of the new state for the given transition :
while (st.hasMoreTokens()) {
String inputNum = st.nextToken();
Map<String,String> mainMap transitions = mainMap.get(initialState);
initialState = transitions.get(inputNum);
}
i would also rename the initialSate in currentState, but its just personnal preference :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With