2017-03-26 50 views
-2

編輯:由於我尋求如何實現CTL和模型檢查序列的解釋,因此不是重複的。在java中構建狀態機/轉換系統需要幫助

我正在編寫一個模型檢查器在Java中,但我堅持設計過渡系統。類型(int,bool,string []或set,int []或set)的對象應該被添加到狀態列表中,作爲過渡系統。它應該是打印狀態和轉換的列表,例如(statenumber,bool,string [] transition,new int [] state)。現在只打印轉換對象和一些記憶我猜。看起來像這樣:Transition @ 11abc1234。我的問題是我應該使用哪些進一步的改進來打印(int,bool,string []或set,int []或set)?提前致謝!這裏是我的代碼:`import java.util。*;

公共類TS {

private int i; 
private boolean bool; 
private static List<Transition> transitions; 
State initial; 
private int[] state; 

TS(State initial, boolean bool, List<Transition> transitions, int[] state) 
{ 
    this.initial = initial; 
    this.bool = bool; 
    TS.transitions = transitions; 
    this.state = state; 
} 

public State getNextState(Set<Condition> conditions) { 
     for(Transition transition : transitions) { 
      //boolean currentStateMatches = transition.old.equals(initial); 
      //boolean conditionsMatch = transition.accepted.equals(accepted); 
      if(Transition.from.equals(initial) && Transition.conditions.equals(conditions) 
        ) { 
       return transition.to; 
      } 
     } 
     return null; 
    } 

public static void main(String[] args) 
{ 

    transitions = new Transition(1, true, new String[] {"v"}, new int[] {2}); 
    transitions = new Transition(2, false, new String[] {"v"}, new int[] {1, 4}); 
    transitions = new Transition(3, false, new String[] {"c"}, new int[] {3}); 
    transitions = new Transition(4, false, new String[] {"c"}, new int[] {4}); 
    System.out.println(transitions); 
} 

}

import java.util.*; 

公共類別轉換實現列表{

private int i; 
private boolean b; 
private String[] strings; 
private int[] js; 

public Transition(int i, boolean b, String[] strings, int[] js) { 
    this.i = i; 
    this.b = b; 
    this.strings = strings; 
    this.js = js; 
} 
public static State from; 
public static Set<Condition> conditions; 
public State to; 

@Override 
public boolean add(Transition e) { 
    // TODO Auto-generated method stub 
    return false; 
} 
@Override 
public void add(int index, Transition element) { 
    // TODO Auto-generated method stub 

} 
@Override 
public boolean addAll(Collection<? extends Transition> c) { 
    // TODO Auto-generated method stub 
    return false; 
} 
@Override 
public boolean addAll(int index, Collection<? extends Transition> c) { 
    // TODO Auto-generated method stub 
    return false; 
} 
@Override 
public void clear() { 
    // TODO Auto-generated method stub 

} 
@Override 
public boolean contains(Object o) { 
    // TODO Auto-generated method stub 
    return false; 
} 
@Override 
public boolean containsAll(Collection<?> c) { 
    // TODO Auto-generated method stub 
    return false; 
} 
@Override 
public Transition get(int index) { 
    // TODO Auto-generated method stub 
    return null; 
} 
@Override 
public int indexOf(Object o) { 
    // TODO Auto-generated method stub 
    return 0; 
} 
@Override 
public boolean isEmpty() { 
    // TODO Auto-generated method stub 
    return false; 
} 
@Override 
public Iterator<Transition> iterator() { 
    // TODO Auto-generated method stub 
    return null; 
} 
@Override 
public int lastIndexOf(Object o) { 
    // TODO Auto-generated method stub 
    return 0; 
} 
@Override 
public ListIterator<Transition> listIterator() { 
    // TODO Auto-generated method stub 
    return null; 
} 
@Override 
public ListIterator<Transition> listIterator(int index) { 
    // TODO Auto-generated method stub 
    return null; 
} 
@Override 
public boolean remove(Object o) { 
    // TODO Auto-generated method stub 
    return false; 
} 
@Override 
public Transition remove(int index) { 
    // TODO Auto-generated method stub 
    return null; 
} 
@Override 
public boolean removeAll(Collection<?> c) { 
    // TODO Auto-generated method stub 
    return false; 
} 
@Override 
public boolean retainAll(Collection<?> c) { 
    // TODO Auto-generated method stub 
    return false; 
} 
@Override 
public Transition set(int index, Transition element) { 
    // TODO Auto-generated method stub 
    return null; 
} 
@Override 
public int size() { 
    // TODO Auto-generated method stub 
    return 0; 
} 
@Override 
public List<Transition> subList(int fromIndex, int toIndex) { 
    // TODO Auto-generated method stub 
    return null; 
} 
@Override 
public Object[] toArray() { 
    // TODO Auto-generated method stub 
    return null; 
} 
@Override 
public <T> T[] toArray(T[] a) { 
    // TODO Auto-generated method stub 
    return null; 
} 

} 

import java.util.*; 

public class State 

    { 
    String state; 
    } 


public class Condition { 
    String condition; 
} 
+3

可能的重複[如何打印我的Java對象而不會得到「SomeType @ 2f92e0f4」?](http://stackoverflow.com/questions/29140402/how-do-i-print-my-java-object- without-getting-sometype2f92e0f4) –

+0

不是真的,因爲我搜索我如何建立總狀態機的進一步解釋。 – Slow1mo

+0

是的 - 這是你問題的主要部分,你不應該有兩部分問題。 –

回答

-1

您需要的方法添加到您的Transition類簽名:

public String toString(){ 
    ... 
} 

默認toString()實現(在Object類中)只是打印出該類的名稱和內部引用。你可以讓你的toString()打印出你想要的。