import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.awt.Graphics; import java.lang.Math; import java.util.*; public class LogikFormeln extends Applet { Panel_table_wert ptw; Panel_normalform pnf; Panel_einzel_wert pew; TextField eingabe; TextField var_eingabe; Panel links, rechts, links_oben, links_unten, links1,links2; boolean [] var; char [] var_char; boolean ergebniss; boolean [] table_ergebniss; boolean [][] table_var; public void init() { pew=new Panel_einzel_wert(this); ptw=new Panel_table_wert(this); pnf=new Panel_normalform(this); links1=new Panel(); links2=new Panel(); links=new Panel(); rechts=new Panel(); links_oben=new Panel(); links_unten=new Panel(); setBackground(Color.white); setLayout(new GridLayout(1,2)); add(links); add(rechts); links.setLayout(new GridLayout(2,1)); links.add(links1); links.add(links2); links1.setLayout(new BorderLayout()); links1.setBackground(new Color(204,148,205)); links1.add(links_oben,BorderLayout.NORTH); links1.add(pnf,BorderLayout.CENTER); eingabe = new TextField(50); Label bitte=new Label("Bitte hier aussagenlogische Formel eingeben:"); Button normalform=new Button("Ergebniss anzeigen"); normalform.setBackground(Color.lightGray); links_oben.setLayout(new GridLayout(3,1)); links_oben.add(bitte); links_oben.add(eingabe); links_oben.add(normalform); links2.setLayout(new BorderLayout()); links2.setBackground(new Color(204,148,0)); links2.add(links_unten,BorderLayout.NORTH); links2.add(pew,BorderLayout.CENTER); links_unten.setLayout(new GridLayout(3,1)); Button wert=new Button("Die Wert anzeigen"); wert.setBackground(Color.lightGray); Label bitte1=new Label("Bitte hier die Wert der Variable eingeben:"); var_eingabe=new TextField(50); links_unten.add(bitte1); links_unten.add(var_eingabe); links_unten.add(wert); rechts.setBackground(new Color(141,233,164)); rechts.setLayout(new BorderLayout()); Button table_wert=new Button("Wascheiliche Wert anzeigen"); table_wert.setBackground(Color.lightGray); rechts.add(table_wert, BorderLayout.NORTH); rechts.add(ptw, BorderLayout.CENTER); normalform.addActionListener(new ActionListener() //得到Normalform { public void actionPerformed(ActionEvent e) { String formeln; formeln=eingabe.getText(); ////////////////////////去掉字符串中的空格开始///////////////////////////////////// StringTokenizer leer_entfernen=new StringTokenizer(formeln," "); String[] eingabe=new String[leer_entfernen.countTokens()]; for(int i=0;i=65)&&(formeln.charAt(i)<=90)) wieviel_buchstabe++; } char [] buchstabe=new char[wieviel_buchstabe]; wieviel_var=wieviel_buchstabe; for(int i=0, j=0; i=65)&&(formeln.charAt(i)<=90)) { buchstabe[j]=formeln.charAt(i); j++; } } int n=-1; for(char i='A'; i<='Z'; i++) //看看有多少变量 { n=-1; for(int j=0; j=0; j--) { rest=zaehler%2; if(rest==1) table_var[i][j]=true; else table_var[i][j]=false; zaehler=zaehler/2; } } for(int j=0; j='A')&&(polynom[0].charAt(0)<='Z')) //给ergebniss赋初值 { if(test_stein(polynom[0])) { for(int i=0; i=65)&&(formeln.charAt(i)<=90)) wieviel_buchstabe++; } char [] buchstabe=new char[wieviel_buchstabe]; wieviel_var=wieviel_buchstabe; for(int i=0, j=0; i=65)&&(formeln.charAt(i)<=90)) { buchstabe[j]=formeln.charAt(i); j++; } } int n=-1; for(char i='A'; i<='Z'; i++) //看看有多少变量 { n=-1; for(int j=0; j='A')&&(polynom[0].charAt(0)<='Z')) //给ergebniss赋初值 { if(test_stein(polynom[0])) { for(int i=0; i=65)&&(formeln.charAt(i)<=90)) wieviel_buchstabe++; } char [] buchstabe=new char[wieviel_buchstabe]; wieviel_var=wieviel_buchstabe; for(int i=0, j=0; i=65)&&(formeln.charAt(i)<=90)) { buchstabe[j]=formeln.charAt(i); j++; } } int n=-1; for(char i='A'; i<='Z'; i++) //看看有多少变量 { n=-1; for(int j=0; j=0; j--) { rest=zaehler%2; if(rest==1) table_var[i][j]=true; else table_var[i][j]=false; zaehler=zaehler/2; } } for(int j=0; j='A')&&(polynom[0].charAt(0)<='Z')) //给ergebniss赋初值 { if(test_stein(polynom[0])) { for(int i=0; i='A')&&(st.charAt(stelle)<='Z')) { var_hilf=vergleich(st,stelle,wieviel_var); if(st.charAt(stelle+2)=='!') { return (var_hilf & rechnen(st,(stelle+2),wieviel_var)); } else{ return (var_hilf & rechnen(st,(stelle+2),wieviel_var)); } } else{ var_hilf=vergleich(st,(stelle+1),wieviel_var); if((stelle+1)==(st.length()-1)) return var_hilf; else return (var_hilf & rechnen(st,(stelle+3),wieviel_var)); } } } public boolean vergleich(String eingabe, int stelle, int wieviel_var) { if(eingabe.length()==1) { for(int i=0; i='A')&&(st.charAt(stelle)<='Z')) { var_hilf=vergleich1(st,stelle,wieviel_var,j); if(st.charAt(stelle+2)=='!') { return (var_hilf & rechnen1(st,(stelle+2),wieviel_var,j)); } else{ return (var_hilf & rechnen1(st,(stelle+2),wieviel_var,j)); } } else{ var_hilf=vergleich1(st,(stelle+1),wieviel_var,j); if((stelle+1)==(st.length()-1)) return var_hilf; else return (var_hilf & rechnen1(st,(stelle+3),wieviel_var,j)); } } } public boolean vergleich1(String eingabe, int stelle, int wieviel_var, int j) { if(eingabe.length()==1) { for(int i=0; i=2)&&((k%2)==0)) { x=20; y +=20;} } } repaint(); } } public class Panel_einzel_wert extends Panel { LogikFormeln lf; Image img; Graphics imggc; int width,height; //FontMetrics fm; public Panel_einzel_wert(LogikFormeln l) { lf=l; } public void init() { if (img==null) { Dimension d=getSize(); width=d.width; height=d.height; img=createImage(width,height); imggc=img.getGraphics(); Font f = new Font ("Serif", Font.BOLD, 15); imggc.setFont (f); //fm = getFontMetrics(f); //validate(); } } public void paint(Graphics gc) { if (img!=null) gc.drawImage(img,0,0,lf); } public void update(Graphics gc) { if (img!=null) gc.drawImage(img,0,0,lf); } public void malefunk() { String ergebniss_zeigen; if(ergebniss) ergebniss_zeigen="1"; else ergebniss_zeigen="0"; imggc.setColor(new Color(204,148,0)); imggc.fillRect(0,0,width, height); imggc.setColor(Color.black); imggc.setFont (new Font( "Serif", Font.BOLD, 240)); imggc.drawString( ergebniss_zeigen, 130, 200); repaint(); } } public static void main( String[] args) { new LogikFormeln(); } }