📄 form.java
字号:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
public class form extends JFrame implements ActionListener
{
JTextField text=null;
node temp=new node();
linkList li=new linkList();
Vector vec=new Vector();
boolean sentence_is_correct=true;//agr d vared shavad false mishavad
public form()
{
setTitle("logic");
setSize(300,150);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocation(400,300);
JPanel row1 = new JPanel();
JLabel pageLabel = new JLabel("Enter: ", JLabel.LEFT);
text = new JTextField(20);
row1.add(pageLabel);
row1.add(text);
FlowLayout flo = new FlowLayout();
setLayout(flo);
add(row1);
JPanel row2 = new JPanel();
JButton Insert=new JButton("Insert");
JButton Search=new JButton("Search");
Insert.addActionListener(this);
Search.addActionListener(this);
row2.add(Insert);
row2.add(Search);
setLayout(flo);
add(row2);
setVisible(true);
}
/***********************************************************************/
public void actionPerformed(ActionEvent evt)
{
if(evt.getActionCommand()=="Insert") //yani agar dokmeye insert zade shavad
{ //varede in block mishavim.
if(scan1(text.getText())==1)
{
temp.setSt1(text.getText());
temp.setSt2("");
}
else if(scan1(text.getText())==2)
{
vec=merge(text.getText());
temp.setSt1((String)vec.elementAt(0));
temp.setSt2((String)vec.elementAt(1));
}
li.add(temp);
temp=new node();
text.setText("");
text.grabFocus();
}
else//agar search bashad kole vorudi dar st1 qarar migirad
{
temp.setSt1(text.getText());
li.add(temp);
temp=new node();
this.setVisible(false);
if(find(li.last.getSt1())==1)
{
if(analize_fasl(li.last.getSt1())==true && sentence_is_correct==true)
{
JOptionPane.showMessageDialog(null,"SENTENCE IS TRUE");
}
else
{
JOptionPane.showMessageDialog(null,"SENTENCE IS FALSE");
}
}
else if(find(li.last.getSt1())==2)
{
if(analize_atf(li.last.getSt1())==true && sentence_is_correct==true)
{
JOptionPane.showMessageDialog(null,"SENTENCE IS TRUE");
}
else
{
JOptionPane.showMessageDialog(null,"SENTENCE IS FALSE");
}
}
System.exit(1); //nemayeshgare payane pardazesh
}
}
/***********************************************************************/
public int scan1(String s)
{
for(int i=0;i<s.length();i++)
{
if(s.charAt(i)==',' || s.charAt(i)=='v' ||s.charAt(i)=='V' || s.charAt(i)=='^')
{
return 2;//yani vorudi 2teke ast
}
}
return 1;
}
/***********************************************************************/
public Vector merge(String s)
{
int index=0;
int j=0;
String s1="";//st1
String s2="";//st2
String s3="";// amalgare beyne 2 reshte
Vector v=new Vector();
for(int i=0;i<s.length();i++)
{
if(s.charAt(i)==',' || s.charAt(i)=='v' || s.charAt(i)=='V' || s.charAt(i)=='^')
{
index=i;
s3=""+s.charAt(i);
}
}
for(int i=0;i<index;i++)
{
s1=""+s.charAt(i);//bad az payane in halqe ,s1 reshtei ke bayad dar st1 qarar girad darad
}
for(int i=index+1;i<s.length();i++)
{
s2=""+s.charAt(i);
}
j=index+1;
while(j!=s.length())
{
s2=""+s.charAt(j);
j=j+1;
}
v.add(s1);
v.add(s2);
v.add(s3);
return v;
}
/***********************************************************************/
public int find(String s)
{
String first_close_BRACKET =""; //)
for(int i=0;i<s.length();i++)
{
if(s.charAt(i)==')')//baraye halate (a^s) ast
{
if(i+1==s.length())
{
if(s.indexOf("^")!=-1)
{
return 1; //(p^q)
}
else
{
return 2; //(pvq)
}
}
if(s.charAt(i+1)=='v' || s.charAt(i+1)=='V')
{
return 1; //(p^q)v(w^t)...
}
else if(s.charAt(i+1)=='^')
{
return 2; //(pvq)^(wvt)...
}
}
}
return 0;
}
/***********************************************************************/
public boolean atf(boolean p,boolean q)
{
if(p && q)
{
return true;//agar p va q har do true bashand , true bar migardanad
}
return false; //dar qeyre in surat false barmigardanad
}
/***********************************************************************/
public boolean analize_fasl(String s)
{
int index=s.length();
String st="";//avalin (p^q) ramidahad
String new_st="";//baqimandeye s ra dar khod negah midarad
for(int i=0;i<s.length();i++)
{
if(s.charAt(i)!='v' && s.charAt(i)!='V')
{
st=st+s.charAt(i)+"";
}
else
{
index=i;
break;
}
}
if(is_True(st))
{
return true;
}
for(int i=index+1;i<s.length();i++)
{
new_st=new_st+ s.charAt(i)+"";
}
if(new_st=="") //sharte etmame tabe bazgashty ast
{
return false;
}
return analize_fasl(new_st);//recessive
}
/***********************************************************************/
public boolean is_True(String s)
{
int index=0;
boolean p,q;
boolean p_is_KB=false;//moshakhas mikonad p dar KB ast ya na
boolean q_is_KB=false;
boolean p_naqiz=false; //moshakhas mikonad ~p ast
boolean q_naqiz=false;//moshakhas mikonad ~q ast
String s1="";//s1=p
String s2="";//s2=q
node curent=li.first;
for(int i=0;i<s.length();i++)
{
if(s.charAt(i)!='^')
{
s1=s1+s.charAt(i)+"";
}
if(s.charAt(i)=='^')
{
index=i;
break;
}
}
for(int i=index+1;i<s.length();i++)
{
if(s.charAt(i)!=' ')
{
s2=s2+s.charAt(i)+"";
}
}
while(curent.next != null)
{
if(s1.indexOf(curent.getSt1())!=-1 )
{
p_is_KB=true;
}
if(curent.getSt2()!="")
{
if(s1.indexOf(curent.getSt2())!=-1)
{
p_is_KB=true;
}
}
if(s2.indexOf(curent.getSt1())!=-1 )
{
q_is_KB=true;
}
if(curent.getSt2()!="")
{
if(s2.indexOf(curent.getSt2())!=-1)
{
q_is_KB=true;
}
}
curent=curent.next;
}
if(p_is_KB==false || q_is_KB==false )
{
sentence_is_correct=false;
}
if(s1.indexOf("~")!=-1)
{
p_naqiz=true;
}
if(s2.indexOf("~")!=-1)
{
q_naqiz=true;
}
if(p_naqiz==false && q_naqiz==false)
{
return true;
}
else
{
return false;
}
}
/***********************************************************************/
public boolean analize_atf(String s)
{
int index=s.length();
String st="";//avalin (pvq) ra negah midarad
String new_st="";
for(int i=0;i<s.length();i++)
{
if(s.charAt(i)!='^' )
{
st=st+s.charAt(i)+"";
}
else
{
index=i;
break;
}
}
if(is_False(st))
{
return false;
}
for(int i=index+1;i<s.length();i++)
{
new_st=new_st+ s.charAt(i)+"";
}
if(new_st=="")
{
return true;
}
return analize_atf(new_st);
}
/***********************************************************************/
public boolean is_False(String s)//vorudi (pVq) ast
{
int index=0;
boolean p,q;
boolean p_is_KB=false;//yani vorudi vojud nadarad dar barname barresi mikonad ke agar p dar BK hast ,true mishavad
boolean q_is_KB=false;
boolean p_naqiz=false; //moshakhas mikonad ~p ast
boolean q_naqiz=false;//moshakhas mikonad ~q ast
String s1="";//s1=p
String s2="";//s2=q
node curent=li.first;
for(int i=0;i<s.length();i++)
{
if(s.charAt(i)!='v' && s.charAt(i)!='V')
{
s1=s1+s.charAt(i)+"";
}
if(s.charAt(i)=='v' || s.charAt(i)=='V')
{
index=i;
break;
}
}
for(int i=index+1;i<s.length();i++)
{
if(s.charAt(i)!=' ')
{
s2=s2+s.charAt(i)+"";
}
}
while(curent.next != null)
{
if(s1.indexOf(curent.getSt1())!=-1 )
{
p_is_KB=true;
}
if(curent.getSt2()!="")
{
if(s1.indexOf(curent.getSt2())!=-1)
{
p_is_KB=true;
}
}
if(s2.indexOf(curent.getSt1())!=-1 )
{
q_is_KB=true;
}
if(curent.getSt2()!="")
{
if(s2.indexOf(curent.getSt2())!=-1)
{
q_is_KB=true;
}
}
curent=curent.next;
}
if(p_is_KB==false || q_is_KB==false )
{
sentence_is_correct=false;
}
if(s1.indexOf("~")!=-1)
{
p_naqiz=true;
}
if(s2.indexOf("~")!=-1)
{
q_naqiz=true;
}
if(p_naqiz==true && q_naqiz==true)
{
return true;
}
else
{
return false;
}
}
/***********************************************************************/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -