私はif()
文を使ってトランジションを制御しますが、動作しません。どうすればこれらの問題を解決できますか? EasyFSMライブラリを使用して、Finite State Machineに基づくシミュレーションを実装します。Java if()文が機能しない
私自身のコードを添付します。これは私が解決したい問題を抱えているコードの一部に過ぎません。
私は構文エラーがないことだと思うが、私はプログラムの実行時に遷移が存在しない(f.ProcessFSM(~)
が動作しない)とのみIDLE
状態(それがFSMの最初の状態である。)
どうすればこの問題を解決できますか?
FSM f = new FSM("C://Users//losin//Desktop//file//PMC.xml", new FSMAction() {
@Override
public boolean action(String curState, String message, String nextState, Object args) {
return true;
}
});
for(int j=0; j <10 ; j++) {
list.add(f.getCurrentState().toString());
if(f.getCurrentState().toString()=="IDLE") {
double rnd1 = Math.random();
if(list.contains("PROCESS_COMPLIETED")==true) {
if(rnd1 < 0.05) {
f.ProcessFSM("FAIL");
} else if(rnd1 < 0.15) {
f.ProcessFSM("CLEAN");
} else {
f.ProcessFSM("LOAD");
}
} else {
if(rnd1 < 0.05) {
f.ProcessFSM("FAIL");
} else {
f.ProcessFSM("LOAD");
}
}
} else if(f.getCurrentState().toString()=="PREPARE") {
f.ProcessFSM("PROCESS_START");
} else if(f.getCurrentState().toString()=="PROCESS") {
double rnd2 = Math.random();
if(rnd2 < 0.05) {
f.ProcessFSM("FAIL");
} else {
f.ProcessFSM("COMPLETE");
}
} else if(f.getCurrentState().toString()=="PROCESS_COMPLETED") {
f.ProcessFSM("UNLOAD");
} else if(f.getCurrentState().toString()=="FAILURE") {
f.ProcessFSM("FIX");
} else {
f.ProcessFSM("CLEAN_END");
}
}
CSVUtils.writeLine(writer, list);
writer.flush();
writer.close();
文字列を比較しないでくださいh '=='、Javaでは '.equals()'を使います。 –