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

📄 calculator.java

📁 java语言开发的计算器
💻 JAVA
字号:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import javax.swing.border.*;

public class Calculator extends JApplet implements ActionListener {
  private final String[] KEYS = {
      "7", "8", "9", "/", "sqrt",
      "4", "5", "6", "*", "%",
      "1", "2", "3", "-", "1/x",
      "0", "+/-", ".", "+", "="
  };
  private final String[] COMMAND = {
      "Backspace", "CE", "C"};
  private final String[] M = {
      " ", "MC", "MR", "MS", "M+"};
  private JButton keys[] = new JButton[KEYS.length];
  private JButton commands[] = new JButton[COMMAND.length];
  private JButton m[] = new JButton[M.length];
  private JTextField display = new JTextField("0");

// public JTextField setHorizontalAlignment(int alignment);
// private JTextField display.setHorizontalAlignment(JTextField.RIGHT)=new JTextField("0");

  private void setup() {
    display.setHorizontalAlignment(JTextField.RIGHT);
    JPanel calckeys = new JPanel();
    JPanel command = new JPanel();
    JPanel calms = new JPanel();
    calckeys.setLayout(new GridLayout(4, 5, 3, 3));
    command.setLayout(new GridLayout(1, 3, 3, 3));
    calms.setLayout(new GridLayout(5, 1, 3, 3));

    for (int i = 0; i < KEYS.length; i++) {
      keys[i] = new JButton(KEYS[i]);
      calckeys.add(keys[i]);
      keys[i].setForeground(Color.blue);
    }
    keys[3].setForeground(Color.red);
    keys[4].setForeground(Color.red);
    keys[8].setForeground(Color.red);
    keys[9].setForeground(Color.red);
    keys[13].setForeground(Color.red);
    keys[14].setForeground(Color.red);
    keys[18].setForeground(Color.red);
    keys[19].setForeground(Color.red);

    for (int i = 0; i < COMMAND.length; i++) {
      commands[i] = new JButton(COMMAND[i]);
      command.add(commands[i]);
      commands[i].setForeground(Color.red);
    }
    for (int i = 0; i < M.length; i++) {
      m[i] = new JButton(M[i]);
      calms.add(m[i]);
      m[i].setForeground(Color.red);
    }
    JPanel panel1 = new JPanel();
    panel1.setLayout(new BorderLayout(3, 3));
    panel1.add("North", command);
    panel1.add("Center", calckeys);
    JPanel top = new JPanel();
    top.setLayout(new BorderLayout());
    display.setBackground(Color.WHITE);
    top.add("Center", display);
    getContentPane().setLayout(new BorderLayout(3, 5));
    getContentPane().add("North", top);
    getContentPane().add("Center", panel1);
    getContentPane().add("West", calms);
  }

  public void init() {

    setup();

    for (int i = 0; i < KEYS.length; i++) {
      keys[i].addActionListener(this);
    }
    for (int i = 0; i < COMMAND.length; i++) {
      commands[i].addActionListener(this);
    }
    for (int i = 0; i < M.length; i++) {
      m[i].addActionListener(this);
    }
    display.setEditable(false);
  }

  public void actionPerformed(ActionEvent e) {
    String label = e.getActionCommand();
// double zero=e.getActionCommand();
    if (label == "C")
      handleC();
    else if (label == "Backspace")
      handleBackspace();
    else if (label == "CE")
      display.setText("0");
    else if ("0123456789.".indexOf(label) >= 0) {
      handleNumber(label);
// handlezero(zero);
    }

    else
      handleOperator(label);
  }

  private boolean firstDigit = true;

  private void handleNumber(String key) {
    if (firstDigit)
      display.setText(key);
    else if ( (key.equals(".")) && (display.getText().indexOf(".") < 0))
      display.setText(display.getText() + ".");
    else if (!key.equals("."))
      display.setText(display.getText() + key);
    firstDigit = false;
  }

//private void handlezero(String key)
//{
// if(!((double)display.setText(key))
// display.setText(0);
// }
  private double number = 0.0;
  private String operator = "=";

  private void handleOperator(String key) {
    if (operator.equals("/")) {
      if (getNumberFromDisplay() == 0.0)
        display.setText("除数不能为零");
      else {
        number /= getNumberFromDisplay();
        long t1;
        double t2;
        t1 = (long) number;
        t2 = number - t1;
        if (t2 == 0)
          display.setText(String.valueOf(t1));
        else
          display.setText(String.valueOf(number));
      }
    }
    else if (operator.equals("1/x")) {
      if (number == 0.0)
        display.setText("零没有倒数");
      else {
        number = 1 / number;
        long t1;
        double t2;
        t1 = (long) number;
        t2 = number - t1;
        if (t2 == 0)
          display.setText(String.valueOf(t1));
        else
          display.setText(String.valueOf(number));
      }
    }
    else if (operator.equals("+"))
      number += getNumberFromDisplay();
    else if (operator.equals("-"))
      number -= getNumberFromDisplay();
    else if (operator.equals("*"))
      number *= getNumberFromDisplay();
    else if (operator.equals("sqrt")) {
      number = Math.sqrt(number);

    }
    else if (operator.equals("%"))
      number = number / 100;
    else if (operator.equals("+/-"))
      number = number * ( -1);
    else if (operator.equals("="))
      number = getNumberFromDisplay();
    long t1;
    double t2;
    t1 = (long) number;
    t2 = number - t1;
    if (t2 == 0)
      display.setText(String.valueOf(t1));
    else
      display.setText(String.valueOf(number));
    operator = key;
    firstDigit = true;
  }

  private double getNumberFromDisplay() {
    return Double.valueOf(display.getText()).doubleValue();
  }

  private void handleC() {
    display.setText("0");
    firstDigit = true;
    operator = "=";
  }

  private void handleBackspace() {
    String text = display.getText();
    int i = text.length();
    if (i > 0) {
      text = text.substring(0, i - 1);
      if (text.length() == 0) {
        display.setText("0");
        firstDigit = true;
        operator = "=";
      }
      else
        display.setText(text);
    }

  }

  public static void main(String args[]) {
    JFrame f = new JFrame();
    Calculator Calculator1 = new Calculator();
    Calculator1.init();
    f.getContentPane().add(Calculator1);
    f.setVisible(true);
    f.setBounds(300, 200, 380, 245);
    f.setBackground(Color.LIGHT_GRAY);
    f.validate();
    f.setResizable(false);
    f.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });
    f.setTitle("计算器");
  }
}

⌨️ 快捷键说明

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