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

📄 calculator.java

📁 呆瓜原创的计算器
💻 JAVA
字号:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class ButtonPanel extends JPanel{
  JButton buttonNumObj[]=new JButton[10];
  JButton buttonAddObj;
  JButton buttonMinObj;
  JButton buttonMulObj;
  JButton buttonDivObj;
  JButton buttonDotObj;
  JButton buttonEqaObj;
  ACalculator aCalculatorObj=null;
  ButtonPanel(ACalculator acr){
    aCalculatorObj=acr;
    for(int i=0;i<10;i++){
      buttonNumObj[i]=new JButton(Integer.toString(i));
      buttonNumObj[i].setBackground(new Color(148,176,192));
    }
    buttonAddObj=new JButton("+");
    buttonMinObj=new JButton("-");
    buttonMulObj=new JButton("×");
    buttonDivObj=new JButton("÷");
    buttonDotObj=new JButton(".");
    buttonEqaObj=new JButton("=");
    setLayout(new GridLayout(4,4));
    add(buttonNumObj[7]);
    add(buttonNumObj[8]);
    add(buttonNumObj[9]);
    add(buttonAddObj);
    add(buttonNumObj[4]);
    add(buttonNumObj[5]);
    add(buttonNumObj[6]);
    add(buttonMinObj);
    add(buttonNumObj[1]);
    add(buttonNumObj[2]);
    add(buttonNumObj[3]);
    add(buttonMulObj);
    add(buttonNumObj[0]);
    add(buttonDotObj);
    add(buttonEqaObj);
    add(buttonDivObj);
    buttonAddObj.addActionListener(aCalculatorObj);
    buttonMinObj.addActionListener(aCalculatorObj);
    buttonMulObj.addActionListener(aCalculatorObj);
    buttonDivObj.addActionListener(aCalculatorObj);
    buttonDotObj.addActionListener(aCalculatorObj);
    buttonEqaObj.addActionListener(aCalculatorObj);
    buttonNumObj[0].addActionListener(aCalculatorObj);
    buttonNumObj[1].addActionListener(aCalculatorObj);
    buttonNumObj[2].addActionListener(aCalculatorObj);
    buttonNumObj[3].addActionListener(aCalculatorObj);
    buttonNumObj[4].addActionListener(aCalculatorObj);
    buttonNumObj[5].addActionListener(aCalculatorObj);
    buttonNumObj[6].addActionListener(aCalculatorObj);
    buttonNumObj[7].addActionListener(aCalculatorObj);
    buttonNumObj[8].addActionListener(aCalculatorObj);
    buttonNumObj[9].addActionListener(aCalculatorObj);
  }
}
class ACalculator extends JFrame implements ActionListener{
  JTextField textFieldObj;
  ButtonPanel buttonPanelObj;
  ACalculator(){
    super("Calculator");
    textFieldObj=new JTextField();
    textFieldObj.setEditable(false);
    textFieldObj.setBackground(new Color(218,255,255));
    textFieldObj.setHorizontalAlignment(4);
    getContentPane().add("North",textFieldObj);
    buttonPanelObj=new ButtonPanel(this);
    getContentPane().add("Center",buttonPanelObj);
    setSize(200,200);
    setResizable(false);
    setVisible(true);
    setDefaultCloseOperation(this.EXIT_ON_CLOSE);
  }
  int method=0;          //计算规则:0无,1加,2减,3乘,4除。
  double temp=0;         //当前数据
  double temp_a=0;       //先存放当前数据,再与本次运算存放结果
  double temp_b=0;       //存放上次temp_a的值,再与本次temp_a运算
  boolean dot=false;     //是否已经按了小数点
  boolean result=false;  //是否按了等号
  String input="";       //输入字符串
  String output="";      //显示字符串
  public void actionPerformed(ActionEvent e){
    String command=e.getActionCommand();
    if(command.equals(".")){      //如果按的是小数点
      if(dot==true) command="";   //如果已经有了小数点,不再加小数点
      input+=command;
      textFieldObj.setText(input);//显示
      dot=true;   //设置为按过小数点
    }
    if(command.equals("0")){  //如果按的是0
      if(result==true){       //如果按过等号
        temp_a=0;             //恢复初始值,但temp_b未恢复
        result=false;
        method=0;
      }
      if(input.equals("0")) input="";  //开头按多个0等于按一个0
      input+=command;
      textFieldObj.setText(input);      
    }
    if(command.equals("1")||command.equals("2")||command.equals("3")||command.equals("4")||command.equals("5")||command.equals("6")||command.equals("7")||command.equals("8")||command.equals("9")){//如果按的是1-9数字
      if(result==true){  //如果按过等号,恢复初始值,但temp_b未恢复
        temp_a=0;
        result=false;
        method=0;
      }
      input+=command;  //显示按的数字
      textFieldObj.setText(input);      
    }
    if(command.equals("+")||command.equals("-")||command.equals("×")||command.equals("÷")||command.equals("=")){//如果按的是运算符号
      if(input.equals("")&&method==0){
        if(command.equals("-")){  //按的第一个是“-”,则显示负数,按负数运算
          input="-";
          textFieldObj.setText(input);
        }
        else textFieldObj.setText("请先输入数据");  //如果没按数字,直接按其他运算符号,则提示
      }    
      else{
        if(input.equals(".")) input="0.";//如果只输入小数点,自动转换为0.
        if(!input.equals("")) temp=Double.parseDouble(input);//显示框中的字符串转换为double类型数据
        if(temp_a==0){  //这里的交换自己觉得比较经典
          temp_a=temp;
          temp_b=temp_a;
        }
        else{
          temp_b=temp_a;
          temp_a=temp;
        }
        if(method==1) temp_a=temp_b+temp_a;//执行加,存放结果
        if(method==2) temp_a=temp_b-temp_a;//执行减,存放结果
        if(method==3) temp_a=temp_b*temp_a;
        if(method==4) temp_a=temp_b/temp_a;
        if(command.equals("+")){//如果按的是加
          method=1;    //设标志
          if(result==true){//如果按了等号
            temp_a=temp_b;//代入数据慢慢研究就懂了,要讲真的说不好
            result=false;
          }
        }
        if(command.equals("-")){
          method=2;
          if(result==true){
            temp_a=temp_b;
            result=false;
          }
        }
        if(command.equals("×")){
          method=3;
          if(result==true){
            temp_a=temp_b;
            result=false;
          }
        }
        if(command.equals("÷")){
          method=4;
          if(result==true){
            temp_a=temp_b;
            result=false;
          }
        }
        if(command.equals("=")) result=true;  //如果按的是等号,设标志

        dot=false;  //以下是只要按运算符号都会执行的,而非按等号才执行的哦
        input="";
        output=Double.toString(temp_a);
        textFieldObj.setText(output);
      }
    } 
  }
}
public class Calculator{
  public static void main(String[] args){
    ACalculator calculatorObj=new ACalculator();
  }
}

⌨️ 快捷键说明

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