⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 automation.java

📁 一个java编写的DFA(difinite automata reader) 拥有完备的图形界面和rebustness 另付.dat的测试文件
💻 JAVA
字号:
package automation;

public class Automation 
{
	private int stateNum;
	private int transNum;
	private int finals[];
	private String figure[];
	private Transition transitions[];
	
	public Automation(){}
	
	public Automation(int stateNum, int transNum, int finals[], String figure[], Transition transitions[])
	{
		this.stateNum = stateNum;
		this.figure = figure;
		this.finals = finals;
		this.transNum = transNum;
		this.transitions = transitions;
	}
	
	public String getFinalString()
	{
		String temp = " ";
		for(int i = 0; i < finals.length; i++)
		{
			temp += finals[i] + ", ";
		}
		temp += "\n";
		
		return temp;
	}
	
	public String getNumbers()
	{
		String temp = " ";
		temp += "The number of states is " + stateNum +", \n";
		temp += "The number of transitions is " + transNum +", \n";
		
		return temp;
	}
	
	public String getFigure()
	{
		String temp = " ";
		for(int i = 0; i < figure.length; i++)
		{
			temp += figure[i] + ", ";
		}
		temp += "\n";
		
		return temp;
	}
	
	public boolean isFigure(String in)
	{
		for(int i = 0; i < figure.length; i++)
		{
			if(figure[i].equals(in))
			{
				return true;
			}
		}
		return false;
	}

	public boolean check()
	{
		for(int i = 0; i < finals.length; i++)
		{
			if(finals[i] > stateNum)
			{
				return false;
			}
		}
		for(int i = 0; i < transitions.length; i++)
		{
			if(transitions[i].getStart() > stateNum || transitions[i].getEnd() > stateNum 
					|| !(isFigure(transitions[i].getState())))
			{
				return false;
			}
		}
		
		return true;
	}
	
	public boolean accept(String[] in)
	{
		int temp = 0;
		for(int i = 0; i < in.length ; i++)
		{
			temp = getEnd(temp, in[i]);
		}
		if(isFinal(temp))
		{
			return true;
		}
		else
			return false;
	}

	
	private int getEnd(int start , String a)
	{
		for(int i = 0; i < transNum; i++)
		{
			if(transitions[i].getStart() == start && transitions[i].getState().equals(a))
			{
				return transitions[i].getEnd();
			}
		}
		return -1;
	}
	
	private boolean isFinal(int in)
	{
		for(int i = 0; i < finals.length; i++)
		{
			if(finals[i] == in)
			{
				return true;
			}
		}
		return false;
	}
	
	/*Since it is formed from file, no modifier on private stuff is available*/
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -