java编写的计算器

这是一个用Java编写的计算器程序,实现了基本的数学运算,包括加、减、乘、除、求平方根、取倒数等功能。用户界面包括数字键、运算符键以及清除、回退等控制键。程序还提供了内存操作,可以存储和读取计算结果。
摘要由CSDN通过智能技术生成
import  java.awt. * ;
import  java.lang. * ;
import  javax.swing. * ;
import  javax.swing.event. * ;
import  java.awt.event. * ;
import  java.text.DecimalFormat;
public   class  Calculator
    
implements  ActionListener  //导入动作监听接口
  
//设计面板中的单位
  JFrame frame;
  JTextField textAnswer;
  JPanel panel, panel1, panel2, panel3;
  JMenuBar mainMenu;
  JTextField textMemory;
  JLabel labelMemSpace; 
//labelMemSpace单纯做摆设,控制面板的形状
  JButton buttonBk, buttonCe, buttonC;
  JButton button[];
  JButton buttonMC, buttonMR, buttonMS, buttonMAdd;
  JButton buttonDot, buttonAddAndSub, buttonAdd, buttonSub, buttonMul,
      buttonDiv, buttonMod;
  JButton buttonSqrt, buttonDao, buttonEqual;
  JMenu editMenu, viewMenu, helpMenu;
  JMenuItem copyItem, pasteItem, tItem, sItem, numberGroup, topHelp, aboutCal;
  DecimalFormat df; 
//设置数据输出精度
  boolean clickable; //控制当前能否按键
  double memoryd; //使用内存中存储的数字
  int memoryi;
  
double vard, answerd; //用来保存double型数据的中间值(vard)和最后结果(answerd)
  short key = -1, prekey = -1//key用来保存当前进行何种运算,prekey用来保存前次进行何种运算
  String copy; //做复制用
  JTextArea help; //帮助
  JScrollPane scrollHelp;
  
//构造函数
  public Calculator() {
    clickable 
= true;
    answerd 
= 0;
    frame 
= new JFrame("计算器");
    df 
= new DecimalFormat("0.##############"); //设置数据输出精度(对于double型值)
    textAnswer = new JTextField(15);
    textAnswer.setText(
"");
    textAnswer.setEditable(
false);
    textAnswer.setBackground(
new Color(255255255));
    panel 
= new JPanel();
    frame.getContentPane().add(panel);
    panel1 
= new JPanel();
    panel2 
= new JPanel();
    panel.setLayout(
new BorderLayout());
    
//设计整个面板
    mainMenu = new JMenuBar();
    editMenu 
= new JMenu("编辑(E)");
    viewMenu 
= new JMenu("查看(V)");
    helpMenu 
= new JMenu("帮助(H)");
    copyItem 
= new JMenuItem("   复制(C) Ctrl+C");
    copyItem.addActionListener(
this);
    pasteItem 
= new JMenuItem("   粘贴(V) Ctrl+V");
    pasteItem.addActionListener(
this);
    editMenu.add(copyItem);
    editMenu.add(pasteItem);
    tItem 
= new JMenuItem("●标准型(T)");
    tItem.addActionListener(
this);
    sItem 
= new JMenuItem("   科学型(S)");
    sItem.addActionListener(
this);
    numberGroup 
= new JMenuItem("   数字分组(I)");
    numberGroup.addActionListener(
this);
    viewMenu.add(tItem);
    viewMenu.add(sItem);
    viewMenu.add(numberGroup);
    topHelp 
= new JMenuItem("   帮助主题(H)");
    topHelp.addActionListener(
this);
    help 
= new JTextArea(520);
    scrollHelp 
= new JScrollPane(help);
    help.setEditable(
false);
    help.append(
"执行简单计算 ");
    help.append(
"1.  键入计算的第一个数字。 ");
    help.append(
"2.  单击“+”执行加、“-”执行减、“*”执行乘或“/”执行除。 ");
    help.append(
"3.  键入计算的下一个数字。 ");
    help.append(
"4.  输入所有剩余的运算符和数字。 ");
    help.append(
"5.  单击“=”。 ");
    aboutCal 
= new JMenuItem("   关于计算器(A)");
    aboutCal.addActionListener(
this);
    helpMenu.add(topHelp);
    helpMenu.add(aboutCal);
    mainMenu.add(editMenu);
    mainMenu.add(viewMenu);
    mainMenu.add(helpMenu);
    panel.add(mainMenu, BorderLayout.NORTH);
    panel.add(textAnswer, BorderLayout.CENTER);
    panel.add(panel1, BorderLayout.SOUTH);
    panel1.setLayout(
new BorderLayout());
    textMemory 
= new JTextField(3);
    textMemory.setEditable(
false);
    textMemory.setBackground(
new Color(217217217));
    labelMemSpace 
= new JLabel("                   ");
    buttonBk 
= new JButton("Backspace");
    buttonBk.setForeground(
new Color(25500));
    buttonCe 
= new JButton("CE");
    buttonCe.setForeground(
new Color(25500));
    buttonC 
= new JButton("C");
    buttonC.setForeground(
new Color(25500));
    buttonBk.addActionListener(
this);
    buttonCe.addActionListener(
this);
    buttonC.addActionListener(
this);
    panel1.add(panel2, BorderLayout.NORTH);
    panel2.setLayout(
new FlowLayout(FlowLayout.RIGHT));
    panel2.add(textMemory);
    panel2.add(labelMemSpace);
    panel2.add(buttonBk);
    panel2.add(buttonCe);
    panel2.add(buttonC);
    panel3 
= new JPanel();
    panel1.add(panel3, BorderLayout.CENTER);
    button 
= new JButton[10];
    
for (int i = 0; i < button.length; i++{
      button[i] 
= new JButton(Integer.toString(i));
      button[i].setForeground(
new Color(00255));
    }

    buttonMC 
= new JButton("MC");
    buttonMC.setForeground(
new Color(25500));
    buttonMR 
= new JButton("MR");
    buttonMR.setForeground(
new Color(25500));
    buttonMS 
= new JButton("MS");
    buttonMS.setForeground(
new Color(25500));
    buttonMAdd 
= new JButton("M+");
    buttonMAdd.setForeground(
new Color(25500));
    buttonDot 
= new JButton(".");
    buttonDot.setForeground(
new Color(00255));
    buttonAddAndSub 
= new JButton("+/-");
    buttonAddAndSub.setForeground(
new Color(00255));
    buttonAdd 
= new JButton("+");
    buttonAdd.setForeground(
new Color(25500));
    buttonSub 
= new JButton("-");
    buttonSub.setForeground(
new Color(25500));
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值