• java实现简单计算器功能


    童鞋们,是不是有使用计算器的时候,还要进入运行,输入calc,太麻烦了,有时候甚至还忘记单词怎么拼写,呵呵
    程序员自己写代码实现,又简单,又方便啊

    以下为代码(想要生成可执行工具可参考:http://www.cnblogs.com/holdon521/p/4483966.html

    package com;
    
    import java.awt.BorderLayout;
    
    import java.awt.EventQueue;
    
    import java.awt.Font;
    
    import java.awt.GridLayout;
    
    import java.awt.event.ActionEvent;
    
    import java.awt.event.ActionListener;
    
    import javax.swing.JButton;
    
    import javax.swing.JFrame;
    
    import javax.swing.JPanel;
    
    import javax.swing.JTextField;
    
    import javax.swing.SwingConstants;
    
    import javax.swing.UIManager;
    
    import javax.swing.border.EmptyBorder;
    
    public class Test  extends JFrame{
    
    /**
    
       *  humphrey
    
       */
    
      private static final long serialVersionUID = -9075562467166618473L;
    
      private JPanel contentPane;
    
      private JTextField display;
    
      private ActionListener insert = new InsertAction();
    
      private ActionListener command = new CommandAction();
    
      private double result = 0;
    
      private String lastCommand = "=";
    
      private boolean start = true;
    
      
    
      /**
    
       * Launch the application.
    
       */
    
      public static void main(String[] args) {
    
          try {
    
              UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
    
          } catch (Throwable e) {
    
              e.printStackTrace();
    
          }
    
          EventQueue.invokeLater(new Runnable() {
    
              public void run() {
    
                  try {
    
                      Test frame = new Test();
    
                      frame.setVisible(true);
    
                  } catch (Exception e) {
    
                      e.printStackTrace();
    
                  }
    
              }
    
          });
    
      }
    
      
    
      /**
    
       * Create the frame.
    
       */
    
      public Test() {
    
          setTitle("u8BA1u7B97u5668");
    
          setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
          setLocationByPlatform(true);
    
          contentPane = new JPanel();
    
          contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    
          contentPane.setLayout(new BorderLayout(0, 0));
    
          setContentPane(contentPane);
    
          
    
          JPanel displayPanel = new JPanel();
    
          contentPane.add(displayPanel, BorderLayout.NORTH);
    
          
    
          display = new JTextField();
    
          display.setText("0");
    
          display.setHorizontalAlignment(SwingConstants.RIGHT);
    
          display.setEditable(false);
    
          display.setFont(new Font("微软雅黑", Font.PLAIN, 15));
    
          displayPanel.add(display);
    
          display.setColumns(13);
    
          
    
          JPanel buttonPanel = new JPanel();
    
          contentPane.add(buttonPanel, BorderLayout.CENTER);
    
          buttonPanel.setLayout(new GridLayout(4, 4, 5, 5));
    
          
    
          JButton number7Button = new JButton("7");
    
          number7Button.addActionListener(insert);
    
          number7Button.setFont(new Font("微软雅黑", Font.PLAIN, 15));
    
          buttonPanel.add(number7Button);
    
          
    
          JButton number8Button = new JButton("8");
    
          number8Button.addActionListener(insert);
    
          number8Button.setFont(new Font("微软雅黑", Font.PLAIN, 15));
    
          buttonPanel.add(number8Button);
    
          
    
          JButton number9Button = new JButton("9");
    
          number9Button.addActionListener(insert);
    
          number9Button.setFont(new Font("微软雅黑", Font.PLAIN, 15));
    
          buttonPanel.add(number9Button);
    
          
    
          JButton divideButton = new JButton("/");
    
          divideButton.addActionListener(command);
    
          divideButton.setFont(new Font("微软雅黑", Font.PLAIN, 15));
    
          buttonPanel.add(divideButton);
    
          
    
          JButton number4Button = new JButton("4");
    
          number4Button.addActionListener(insert);
    
          number4Button.setFont(new Font("微软雅黑", Font.PLAIN, 15));
    
          buttonPanel.add(number4Button);
    
          
    
          JButton number5Button = new JButton("5");
    
          number5Button.addActionListener(insert);
    
          number5Button.setFont(new Font("微软雅黑", Font.PLAIN, 15));
    
          buttonPanel.add(number5Button);
    
          
    
          JButton number6Button = new JButton("6");
    
          number6Button.addActionListener(insert);
    
          number6Button.setFont(new Font("微软雅黑", Font.PLAIN, 15));
    
          buttonPanel.add(number6Button);
    
          
    
          JButton multiplyButton = new JButton("*");
    
          multiplyButton.addActionListener(command);
    
          multiplyButton.setFont(new Font("微软雅黑", Font.PLAIN, 15));
    
          buttonPanel.add(multiplyButton);
    
          
    
          JButton number3Button = new JButton("1");
    
          number3Button.addActionListener(insert);
    
          number3Button.setFont(new Font("微软雅黑", Font.PLAIN, 15));
    
          buttonPanel.add(number3Button);
    
          
    
          JButton number2Button = new JButton("2");
    
          number2Button.addActionListener(insert);
    
          number2Button.setFont(new Font("微软雅黑", Font.PLAIN, 15));
    
          buttonPanel.add(number2Button);
    
          
    
          JButton number1Button = new JButton("3");
    
          number1Button.addActionListener(insert);
    
          number1Button.setFont(new Font("微软雅黑", Font.PLAIN, 15));
    
          buttonPanel.add(number1Button);
    
          
    
          JButton subtractButton = new JButton("-");
    
          subtractButton.addActionListener(command);
    
          subtractButton.setFont(new Font("微软雅黑", Font.PLAIN, 15));
    
          buttonPanel.add(subtractButton);
    
          
    
          JButton number0Button = new JButton("0");
    
          number0Button.addActionListener(insert);
    
          number0Button.setFont(new Font("微软雅黑", Font.PLAIN, 15));
    
          buttonPanel.add(number0Button);
    
          
    
          JButton dotButton = new JButton(".");
    
          dotButton.setFont(new Font("微软雅黑", Font.PLAIN, 15));
    
          buttonPanel.add(dotButton);
    
          
    
          JButton equalButton = new JButton("=");
    
          equalButton.addActionListener(command);
    
          equalButton.setFont(new Font("微软雅黑", Font.PLAIN, 15));
    
          buttonPanel.add(equalButton);
    
          
    
          JButton addButton = new JButton("+");
    
          addButton.addActionListener(command);
    
          addButton.setFont(new Font("微软雅黑", Font.PLAIN, 15));
    
          buttonPanel.add(addButton);
    
          pack();
    
      }
    
      
    
      private class InsertAction implements ActionListener {
    
          
    
          public void actionPerformed(ActionEvent e) {
    
              String input = e.getActionCommand();
    
              String text = display.getText();
    
              if (start) {
    
                  display.setText("");
    
                  start = false;
    
              }
    
              if (text.startsWith(".")) {
    
                  display.setText("0" + display.getText() + input);
    
              } else if (text.startsWith("-0.") || text.startsWith("0.")) {
    
                  display.setText(display.getText() + input);
    
              } else if (text.startsWith("-0")) {
    
                  display.setText("-" + input);
    
              } else if (text.startsWith("0")) {
    
                  display.setText(input);
    
              } else {
    
                  display.setText(display.getText() + input);
    
              }
    
          }
    
      }
    
      
    
      private class CommandAction implements ActionListener {
    
          
    
          public void actionPerformed(ActionEvent e) {
    
              String command = e.getActionCommand();
    
              if (start) {
    
                  if (command.equals("-")) {
    
                      display.setText(command);
    
                      start = false;
    
                  } else {
    
                      lastCommand = command;
    
                  }
    
              } else {
    
                  calculate(Double.parseDouble(display.getText()));
    
                  lastCommand = command;
    
                  start = true;
    
              }
    
          }
    
      }
    
      
    
      public void calculate(double x) {
    
          char operator = lastCommand.charAt(0);
    
          switch (operator) {
    
              case '+':
    
                  result += x;
    
                  break;
    
              case '-':
    
                  result -= x;
    
                  break;
    
              case '*':
    
                  result *= x;
    
                  break;
    
              case '/':
    
                  result /= x;
    
                  break;
    
              case '=':
    
                  result = x;
    
                  break;
    
          }
    
          display.setText("" + result);
    
      }
    
    }
  • 相关阅读:
    渣渣小本求职复习之路每天一博客系列——Java基础(9)
    渣渣小本求职复习之路每天一博客系列——Java基础(8)
    渣渣小本求职复习之路每天一博客系列——Java基础(7)
    渣渣小本求职复习之路每天一博客系列——Java基础(6)
    渣渣小本求职复习之路每天一博客系列——Java基础(5)
    渣渣小本求职复习之路每天一博客系列——Java基础(4)
    渣渣小本求职复习之路每天一博客系列——Java基础(3)
    渣渣小本求职复习之路每天一博客系列——数据结构与常用算法(3)
    redis常用命令
    redis的sets类型
  • 原文地址:https://www.cnblogs.com/holdon521/p/4484013.html
走看看 - 开发者的网上家园