Sreac.L 发表于 2015-1-8 17:28

java 另类方法实现计算机连续四则运算

本帖最后由 Sreac.L 于 2015-1-8 17:29 编辑


说明
正常方法:使用正则表达式,方便多了。
但是刚学java,而且还不会使用java调用正则。只能耍个小聪明

我的方法:每次点击运算符先计算出之前所输数值,再用此结果再计算
思路很简单,没什么学习参考意义。发一下代码刷存在而已


package cc;

import java.lang.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class cc {
      static ButtonFrame f = new ButtonFrame();
      public static void main(String[] args) {
                //JOptionPane.showMessageDialog(null, "Code By Sreac.L","About", 1);
                f.setTitle("计算器");
                f.setBounds(300, 200, 250, 300);
                f.setVisible(true);

               
      }

}

class ButtonFrame extends JFrame implements ActionListener {
      static TextField t, t1;
      static Label l;
      float temp1 = 0, r = 0;
      String temp2 = "", ysf = "";

      public ButtonFrame() {
                setLayout(null);
                // JTextArea t = new JTextArea();
                l = new Label();
                l.setLocation(5, 222);
                l.setSize(230, 50);
                add(l);

                t = new TextField("计算、结果_文本框,支持连续四则运算", 50);
                t.setBounds(5, 2, 224, 35);
                add(t);

                t1 = new TextField("运算式预览_文本框,不可编辑", 50);
                t1.setBounds(5, 40, 224, 30);
                add(t1);
                t1.setEditable(false);

                Button yu = new Button("%");
                yu.setBounds(165, 155, 50, 30);
                add(yu);

                Button gen = new Button("√");
                gen.setBounds(165, 190, 50, 30);
                add(gen);

                Button chu = new Button("÷");
                chu.setBounds(125, 85, 30, 30);
                add(chu);

                Button cheng = new Button("×");
                cheng.setBounds(125, 120, 30, 30);
                add(cheng);

                Button jia = new Button("+");
                jia.setBounds(125, 155, 30, 30);
                add(jia);

                Button jian = new Button("-");
                jian.setBounds(125, 190, 30, 30);
                add(jian);

                Button q = new Button("清除");
                q.setBounds(165, 85, 50, 30);
                add(q);

                Button b = new Button("Back");
                b.setBounds(165, 120, 50, 30);
                add(b);

                Button b7 = new Button("7");
                b7.setBounds(5, 85, 30, 30);
                add(b7);

                Button b8 = new Button("8");
                b8.setBounds(45, 85, 30, 30);
                add(b8);

                Button b9 = new Button("9");
                b9.setBounds(85, 85, 30, 30);
                add(b9);

                Button b4 = new Button("4");
                b4.setBounds(5, 120, 30, 30);
                add(b4);

                Button b5 = new Button("5");
                b5.setBounds(45, 120, 30, 30);
                add(b5);

                Button b6 = new Button("6");
                b6.setBounds(85, 120, 30, 30);
                add(b6);

                Button b1 = new Button("1");
                b1.setBounds(5, 155, 30, 30);
                add(b1);

                Button b2 = new Button("2");
                b2.setBounds(45, 155, 30, 30);
                add(b2);

                Button b3 = new Button("3");
                b3.setBounds(85, 155, 30, 30);
                add(b3);

                Button bd = new Button(".");
                bd.setBounds(5, 190, 30, 30);
                add(bd);

                Button b0 = new Button("0");
                b0.setBounds(45, 190, 30, 30);
                add(b0);

                Button dy = new Button("=");
                dy.setBounds(85, 190, 30, 30);
                add(dy);

                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                b1.addActionListener(this);
                b2.addActionListener(this);
                b3.addActionListener(this);
                b4.addActionListener(this);
                b5.addActionListener(this);
                b6.addActionListener(this);
                b7.addActionListener(this);
                b8.addActionListener(this);
                b9.addActionListener(this);
                b0.addActionListener(this);
                dy.addActionListener(this);
                bd.addActionListener(this);
                q.addActionListener(this);
                b.addActionListener(this);
                cheng.addActionListener(this);
                chu.addActionListener(this);
                jian.addActionListener(this);
                jia.addActionListener(this);
                yu.addActionListener(this);
                gen.addActionListener(this);

      }

      public void actionPerformed(ActionEvent e) {
                if (t.getText().equals("计算、结果_文本框,支持连续四则运算"))
                        t.setText("");

                if (e.getActionCommand().equals("清除")) {//所有变量归0
                        t.setText("");
                        t1.setText("");
                        ysf = "";
                        l.setText("");
                        temp1 = 0;
                }
                if (e.getActionCommand().equals("Back")) {
                        StringBuffer s = new StringBuffer(t.getText());
                        if (s.length() != 0)
                              t.setText(s.delete(s.length() - 1, s.length()) + "");//删除最后一个字符
                }
                if (e.getActionCommand().equals("1")) {
                        t.setText(t.getText() + "1");
                        l.setText(l.getText() + "1");
                }
                if (e.getActionCommand().equals("2")) {
                        t.setText(t.getText() + "2");
                        l.setText(l.getText() + "2");
                }

                if (e.getActionCommand().equals("3")) {
                        t.setText(t.getText() + "3");
                        l.setText(l.getText() + "3");
                }
                if (e.getActionCommand().equals("4")) {
                        t.setText(t.getText() + "4");
                        l.setText(l.getText() + "4");
                }
               
                if (e.getActionCommand().equals("5")) {
                        t.setText(t.getText() + "5");
                        l.setText(l.getText() + "5");
                }
                if (e.getActionCommand().equals("6")) {
                        t.setText(t.getText() + "6");
                        l.setText(l.getText() + "6");
                }
                if (e.getActionCommand().equals("7")) {
                        t.setText(t.getText() + "7");
                        l.setText(l.getText() + "7");
                }
                if (e.getActionCommand().equals("8")) {
                        t.setText(t.getText() + "8");
                        l.setText(l.getText() + "8");
                }
                if (e.getActionCommand().equals("9")) {
                        t.setText(t.getText() + "9");
                        l.setText(l.getText() + "9");
                }
                if (e.getActionCommand().equals("0")) {
                        t.setText(t.getText() + "0");
                        l.setText(l.getText() + "0");
                }
                if (e.getActionCommand().equals(".")) {
                        t.setText(t.getText() + ".");
                        l.setText(l.getText() + ".");
                }

                if (e.getActionCommand().equals("+")) {
                //不使用正则,另类连续四则运算思路:每次点击运算符先计算出之前所输数值,再用此结果再计算
                        if (ysf != "") {//判断是否为连续计算
                              go();//先计算出前一次结果
                              temp1 = r;//把结果赋给临时变量1
                              t.setText("");
                              t1.setText("您可以继续输出数值进行计算:" + temp1 + ysf + "__");

                        } else {
                              temp1 = Float.parseFloat(t.getText());
                              t.setText("");
                        }
                        ysf = "+";
                        l.setText(l.getText() + "+");
                }
                if (e.getActionCommand().equals("-")) {
                        if (ysf != "") {
                              go();
                              temp1 = r;
                              t.setText("");
                              t1.setText("您可以继续输出数值进行计算:" + temp1 + ysf + "__");
                        } else {

                              temp1 = Float.parseFloat(t.getText());
                              t.setText("");
                        }
                        ysf = "-";
                        l.setText(l.getText() + "-");
                }

                if (e.getActionCommand().equals("÷")) {
                        if (ysf != "") {
                              go();
                              temp1 = r;
                              t.setText("");
                              t1.setText("您可以继续输出数值进行计算:" + temp1 + ysf + "__");
                        } else {

                              temp1 = Float.parseFloat(t.getText());
                              t.setText("");
                        }
                        ysf = "÷";
                        l.setText(l.getText() + "÷");
                }

                if (e.getActionCommand().equals("×")) {
                        if (ysf != "") {
                              go();
                              temp1 = r;
                              t.setText("");
                              t1.setText("您可以继续输出数值进行计算:" + temp1 + ysf + "__");
                        } else {

                              temp1 = Float.parseFloat(t.getText());
                              t.setText("");
                        }
                        ysf = "×";
                        l.setText(l.getText() + "×");
                }
                if (e.getActionCommand().equals("√")) {
                        t1.setText("√" + t.getText());
                        t.setText(Math.sqrt(Double.parseDouble(t.getText())) + "");
                }
                if (e.getActionCommand().equals("%")) {
                        temp1 = Float.parseFloat(t.getText());
                        t.setText("");
                        ysf = "%";
                }

                if (e.getActionCommand().equals("=")) {
                        go();
                        t.setText(r + "");
                        t1.setText(temp1 + ysf + temp2 + "=" + t.getText());
                        ysf = "";
                        l.setText(l.getText() + "="+r);
                }

      }

      void go() {//计算结果
                temp2 = t.getText();
                if (ysf.equals("+"))
                        r = temp1 + Float.parseFloat(temp2);
                if (ysf.equals("-"))
                        r = temp1 - Float.parseFloat(temp2);
                if (ysf.equals("×"))
                        r = temp1 * Float.parseFloat(temp2);
                if (ysf.equals("÷"))
                        r = temp1 / Float.parseFloat(temp2);
                if (ysf.equals("%"))
                        r = temp1 % Float.parseFloat(temp2);

      }
}

疯狂的破解员 发表于 2015-1-8 17:38

很牛的样子!!

jianai 发表于 2015-1-8 17:55

这是神马玩意??看不懂

yeelnn 发表于 2015-1-9 09:10

好叼的样子
页: [1]
查看完整版本: java 另类方法实现计算机连续四则运算