[Java] 精简java计算器 →→→→→进入此内容的聊天室

来自 , 2020-04-02, 写在 Java, 查看 102 次.
URL http://www.code666.cn/view/08740852
  1. import java.awt.BorderLayout;
  2. import java.awt.GridLayout;
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5.  
  6. import javax.swing.JButton;
  7. import javax.swing.JFrame;
  8. import javax.swing.JPanel;
  9. import javax.swing.JTextField;
  10.  
  11. /**
  12.  * 精简java计算器
  13.  *
  14.  */
  15. public class Calculator implements ActionListener {
  16.  
  17.         private JFrame frame;
  18.         private JButton[] bus;
  19.         private JTextField jtx;
  20.         private JButton bu;
  21.         private char[] strs;
  22.         private String d_one = "";
  23.         private String operator;
  24.  
  25.         public static void main(String[] args) {
  26.                 new Calculator();
  27.         }
  28.  
  29.         /* 利用构造进行实例化 */
  30.         public Calculator() {
  31.                 frame = new JFrame("计算器");
  32.                 jtx = new JTextField(14);
  33.                 bus = new JButton[16];
  34.                 strs = "789/456*123-0.+=".toCharArray();
  35.                 for (int i = 0; i < 16; i++) {
  36.                         bus[i] = new JButton(strs[i] + "");
  37.                         bus[i].addActionListener(this);
  38.                 }
  39.                 bu = new JButton("C");
  40.                 bu.addActionListener(this);
  41.                 init();
  42.         }
  43.  
  44.         /* GUI 初始化 */
  45.         public void init() {
  46.                 JPanel jp1 = new JPanel();
  47.                 jp1.add(jtx);
  48.                 jp1.add(bu);
  49.                 frame.add(jp1, BorderLayout.NORTH);
  50.  
  51.                 JPanel jp2 = new JPanel();
  52.                 jp2.setLayout(new GridLayout(4, 4));
  53.                 for (int i = 0; i < 16; i++) {
  54.                         jp2.add(bus[i]);
  55.                 }
  56.  
  57.                 frame.add(jp2, BorderLayout.CENTER);
  58.  
  59.                 frame.pack();
  60.                 frame.setLocation(500, 300);
  61.                 frame.setVisible(true);
  62.                 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  63.  
  64.         }
  65.  
  66.         /* 事件的处理 */
  67.  
  68.         public void actionPerformed(ActionEvent arg0) {
  69.                 /* 获取输入字符 */
  70.                 String conn = arg0.getActionCommand();
  71.                 /* 清除计算器内容 */
  72.                 if ("C".equals(conn)) {
  73.                         d_one = "";
  74.                         operator = "";
  75.                         jtx.setText("");
  76.                         return;
  77.                 }
  78.                 /* 暂未实现该功能 */
  79.                 if (".".equals(conn)) {
  80.                         return;
  81.                 }
  82.                 /* 记录运算符,保存运算数字 */
  83.                 if (("+-*/".indexOf(conn)) != -1) {
  84.                         if ("".equals(d_one) && "".equals(jtx.getText()))
  85.                                 return;
  86.                         d_one = jtx.getText();
  87.                         operator = conn;
  88.                         jtx.setText("");
  89.                         return;
  90.                 }
  91.                 /* 计算结果 */
  92.                 if ("=".equals(conn)) {
  93.                         if ("".equals(d_one) && "".equals(jtx.getText()))
  94.                                 return;
  95.                         double db = 0;
  96.                         if ("+".equals(operator)) {
  97.                                 db = Double.parseDouble(d_one)
  98.                                                 + Double.parseDouble(jtx.getText());
  99.                                 jtx.setText(db + "");
  100.                         }
  101.                         if ("-".equals(operator)) {
  102.                                 db = Double.parseDouble(d_one)
  103.                                                 - Double.parseDouble(jtx.getText());
  104.                                 jtx.setText(db + "");
  105.                         }
  106.                         if ("*".equals(operator)) {
  107.                                 db = Double.parseDouble(d_one)
  108.                                                 * Double.parseDouble(jtx.getText());
  109.                                 jtx.setText(db + "");
  110.                         }
  111.                         if ("/".equals(operator)) {
  112.                                 db = Double.parseDouble(d_one)
  113.                                                 / Double.parseDouble(jtx.getText());
  114.                                 jtx.setText(db + "");
  115.                         }
  116.                         d_one = db + "";
  117.                         return;
  118.                 }
  119.                 // 界面显示
  120.                 jtx.setText(jtx.getText() + conn);
  121.  
  122.         }
  123.  
  124. }
  125.  

回复 "精简java计算器"

这儿你可以回复上面这条便签

captcha