📄 tablesy.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class tablesy implements ActionListener
{ JFrame frame,frame1;
JButton jb;
JTextField jtf;
Label lb;
boolean flag;
public tablesy()
{ flag=false;
frame=new JFrame("找子串10110的DFA状态转换表");
Container c=frame.getContentPane();
TableModel dataModel=new ATableModel();
JTable table=new JTable(dataModel);
JScrollPane jsp=new JScrollPane(table);
table.setPreferredScrollableViewportSize(new Dimension(500,50));
c.add(jsp,BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0); }
});
frame1=new JFrame("测试字符串是否含有10110子串0/1的串");
Container c1=frame1.getContentPane();
JPanel jp1,jp2;
jp1=new JPanel();jp2=new JPanel();
c1.add(jp1,BorderLayout.NORTH);c1.add(jp2,BorderLayout.SOUTH);
JLabel jlb=new JLabel("请输入一串字符");
jp1.add(jlb);
jtf=new JTextField("",20);
jp1.add(jtf);
jb=new JButton("输入完后,请确定");
jb.addActionListener(this);
jp2.add(jb);
lb=new Label("测试结果显示处");
c1.add(lb,BorderLayout.CENTER);
frame1.pack();
frame1.setVisible(true);
frame1.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0); }
});
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==jb)
{
String str=jtf.getText();
if(str.length()==0)
{ lb.setText("对不起,不能为空,请输入");return;}
char []date=new char[str.length()];
for(int i=0;i<str.length();++i)
date[i]=str.charAt(i);
tran(date);
}
}
public void tran(char a[])
{ tableDFA t=new tableDFA();
int i,j;
i=0;j=0;
do{
if(a[i]=='0')
j=t.stati[j][0];
else if(a[i]=='1')
j=t.stati[j][1];
else
{lb.setText("对不起,这中间有不是0/1字符,请重新输入.");
return;}
if(j==t.stati.length-1)
flag=true;
if(i==a.length-1&&flag)
{ lb.setText("这个串中含有10110子串!"); return;}
i++;
}while(i<a.length);
lb.setText("这不包含10110的1/0串.");
}
public static void main(String[] args)
{
new tablesy();
}
}
class ATableModel extends AbstractTableModel
{ tableDFA t=new tableDFA();
String[] colHeads={"状态","s0","s1"};
Object[][] data={{"开始状态0",t.stati[0][0],t.stati[0][1]},
{" 状态1",t.stati[1][0],t.stati[1][1]},
{" 状态2",t.stati[2][0],t.stati[2][1]},
{" 状态3",t.stati[3][0],t.stati[3][1]},
{" 状态4",t.stati[4][0],t.stati[4][1]},
{"结束状态5",t.stati[5][0],t.stati[5][1]}};
public int getColumnCount()
{
return colHeads.length;
}
public int getRowCount()
{
return data.length;
}
public String getColumnName(int col)
{
return colHeads[col];
}
public Object getValueAt(int row,int col)
{
return data[row][col];
}
public Class GetColumnClass(int c)
{
return getValueAt(0,c).getClass();
}
}
class tableDFA
{ int stati[][]={{0,1},{2,1},{0,3},{2,4},{5,1},{5,5}};
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -