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

📄 cacul.java

📁 一个采用了词法分析和语法分析的计算器
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                Match(NUM);			
                return temp;
            case SUB:
                Match(SUB);
                temp=-F();
                return temp;
            case SIN:			
                Match(SIN);
                t=F();
                t=(t/180)*pi;
                temp=Math.sin(t);
                return temp;
            case COS:
                Match(COS);
                t=F();
                t=(t/180)*pi;
                temp=Math.cos(t);
                return temp;
            case TAN:		
                Match(TAN);
                t=F();
                if (t == 90)
                    error = true;
                t=(t/180)*pi;
                temp=Math.tan(t);
                return temp;
            case POW:
                Match(POW);
                temp=Math.pow(F(),2);
                return temp;
            case LG:
                Match(LG);
                double ln=F();
                System.out.println("F()"+ln);			
                if (ln > 0)
                {
                    temp = Math.log10(ln) ;
                    return temp;
                }
                else {
                    error = true;
                    return 0;
                }
            case LN:
                Match(LN);
                double lN = F();
                if (lN > 0)
                {
                    temp = Math.log(lN);
                    return temp;
                }
                else
                {
                    error = true;
                    return 0;
                }
            case SQRT:					
                Match(SQRT);
                double st=F();
                if(st<0){
                    System.out.println("负数"+st+"无法开根号!");
                    error=true;
                }
                else if(st==0){
                    System.out.println("sqrt(0)!");
                    return 0;
                }
                else  temp=Math.sqrt(st);
                return temp;		                
            default:
                error=true;
                System.out.println("False_F()!");                                                
                return 0;
	}
 }
  //以上是基本的算法,下面是图形界面的实现
 
 public  class Monitor1 implements ActionListener           //按钮动作监听
 { 
   public void actionPerformed(ActionEvent e){
     String s=e.getActionCommand();
     ip=s0.length();
     if (s.equals("+/-"))
     {
         if (i == 0)
         {
             s0 = s0 + "-";
             i++;
         } else i--;
     }	 else if (s.equals("E")){
         double x = Math.E;
         s0 = s0 + x;
     }
     else if (s.equals("π"))
         s0 = s0 + Math.PI;	 
     else if (s.equals("="))                               //此时运行上面的算法
     {
         input = (s0 + "\0").toCharArray();
         lookahead = yylex();
         double x = E();
         if (error == true)
             s0 = "Error!";
         else s0 = x + "";
         input = (s0 + "\0").toCharArray();         
         pCur = 0;                     //得出的结果可以继续计算                   
         error = false;
     }
     else s0 = s0 + s;
     jTextField1.setText(s0);                           //在文本中显示算式和结果
   } 
 }
 
 void dong(){
    Monitor1 bh = new Monitor1();          //动作事件监听;
  jButton1.addActionListener(bh);
  jButton2.addActionListener(bh);
  jButton3.addActionListener(bh);
  jButton4.addActionListener(bh);
  jButton5.addActionListener(bh);
  jButton6.addActionListener(bh);
  jButton7.addActionListener(bh);
  jButton8.addActionListener(bh);
  jButton9.addActionListener(bh);
  jButton10.addActionListener(bh);
  jButton11.addActionListener(bh);
  jButton12.addActionListener(bh);
  jButton13.addActionListener(bh);
  jButton14.addActionListener(bh);
  jButton15.addActionListener(bh);
  jButton16.addActionListener(bh);
  jButton17.addActionListener(bh);
  jButton18.addActionListener(bh);
  jButton19.addActionListener(bh);
  jButton20.addActionListener(bh);
  jButton21.addActionListener(bh);
  jButton22.addActionListener(bh);
  jButton23.addActionListener(bh);
  jButton24.addActionListener(bh);
  jButton25.addActionListener(bh);
  jButton26.addActionListener(bh);
  jButton27.addActionListener(bh);
  jButton28.addActionListener(bh);
 }
 
  

  class MyThread implements Runnable{
	private String time="现在时间: ";
	public void run(){
            while(true){
                time = time + (new Date());
                jLabel1.setText(time);                                    
                try { 
                    Thread.sleep(1000);
                    time = "现在时间是: ";
                }catch(InterruptedException e){ }
            }
        }                			
 }
 
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">//GEN-BEGIN:initComponents
    private void initComponents() {
        jTextField1 = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();
        jButton5 = new javax.swing.JButton();
        jButton6 = new javax.swing.JButton();
        jButton7 = new javax.swing.JButton();
        jButton8 = new javax.swing.JButton();
        jButton9 = new javax.swing.JButton();
        jButton10 = new javax.swing.JButton();
        jButton11 = new javax.swing.JButton();
        jButton12 = new javax.swing.JButton();
        jButton13 = new javax.swing.JButton();
        jButton14 = new javax.swing.JButton();
        jButton15 = new javax.swing.JButton();
        jButton16 = new javax.swing.JButton();
        jButton17 = new javax.swing.JButton();
        jButton18 = new javax.swing.JButton();
        jButton19 = new javax.swing.JButton();
        jButton20 = new javax.swing.JButton();
        jButton21 = new javax.swing.JButton();
        jButton22 = new javax.swing.JButton();
        jButton23 = new javax.swing.JButton();
        jButton24 = new javax.swing.JButton();
        jButton25 = new javax.swing.JButton();
        jButton26 = new javax.swing.JButton();
        jButton27 = new javax.swing.JButton();
        jButton28 = new javax.swing.JButton();
        jButton29 = new javax.swing.JButton();
        jButton30 = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenuItem2 = new javax.swing.JMenuItem();
        jMenu2 = new javax.swing.JMenu();
        jMenuItem3 = new javax.swing.JMenuItem();
        jMenuItem4 = new javax.swing.JMenuItem();
        jMenu3 = new javax.swing.JMenu();
        jMenuItem6 = new javax.swing.JMenuItem();
        jMenuItem7 = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("\u79d1\u5b66\u8ba1\u7b97\u56681.0\u6b63\u5f0f\u7248");
        setAlwaysOnTop(true);
        setBackground(java.awt.SystemColor.window);
        setMinimumSize(new java.awt.Dimension(100, 200));
        setResizable(false);

        jButton1.setText("1");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton2.setText("3");

        jButton3.setText("2");

        jButton4.setText("4");

        jButton5.setText("5");

        jButton6.setText("6");

        jButton7.setText("7");

        jButton8.setText("8");

        jButton9.setText("9");

        jButton10.setText("+");

        jButton11.setText("-");

        jButton12.setText("*");

        jButton13.setText("/");

        jButton14.setText("=");

        jButton15.setText("0");

        jButton16.setText(".");

        jButton17.setText("(");

        jButton18.setText(")");

        jButton19.setText("\u5e73\u65b9");

        jButton20.setText("sqrt");

        jButton21.setText("sin");

        jButton22.setText("cos");

        jButton23.setText("tan");

        jButton24.setText("ln");

        jButton25.setText("+/-");

        jButton26.setText("lg");

        jButton27.setText("E");

        jButton28.setText("\u03c0");

        jButton29.setText("backspace");
        jButton29.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton29ActionPerformed(evt);
            }
        });

        jButton30.setText("CE");
        jButton30.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton30ActionPerformed(evt);
            }
        });

        jMenu1.setText("\u9009\u9879");
        jMenuItem1.setText("\u91cd\u65b0\u5f00\u59cb");

⌨️ 快捷键说明

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