java 计算器 键盘输入_Java实现windows7标准型计算器

程序能实现基本的算术运算,并能够对运算结果的精度进行有效控制,并且实现了存储器相关功能

功能如下:

MC:清除存储数据

MR:读取存储数据显示在屏幕上

MS:将显示的数据覆盖存储到存储器中

M+:用存储的数据加上屏幕上显示的数并更新存储器里的值

M-: 用存储的数据减去屏幕上显示的数并更新存储器里的值

←: 删除输入数的尾数

C: 清除计算器数据,下一次输入数据开始新的运算

CE: 清除当前输入的数

±: 正负数转换

√: 开平方

+,-,*,/ 加减乘除,将结果

%:取模

1/x:取倒数

程序流程图:

a0c015466320c491d6fd90454bdfb45d.png

a591ac1b022969df2e99edc11f780317.png

代码实现:

class operateNum {//操作数类

public double value;//操作数的实际值

public int dotWei;//操作数如果是小数,记录小数点后的位数

public String invertedString;//1/x字符串

public String sqrtedString;//sqrt(x)字符串

public boolean isSqrted,isInverted;//做标记是否√,1/x过,用于后续判断

public boolean clear;//clear为真表示是否重置操作数

public boolean isFloat;//isFloat为真,表示操作数是小数

public operateNum()

{

value=0;

dotWei=0;

sqrtedString=null;

invertedString=null;

isSqrted=false;

isInverted=false;

clear=false;

isFloat=false;

}

public void reset()//重置操作数

{

value=0;

dotWei=0;

sqrtedString=null;

invertedString=null;

isSqrted=false;

isInverted=false;

clear=false;

isFloat=false;

}

}

class storageField {//存储区

public double storageNum;//存储区存储的数据

public boolean storageMode;//是否启动存储区

public storageField()

{

storageNum=0;

storageMode=false;

}

}

import java.awt.*;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.math.BigDecimal;

import javax.swing.*;

import javax.swing.border.Border;

import javax.swing.border.LineBorder;

public class calc extends JFrame{

private JTextField display1,display2,display3;

private JButton num[],operate[];

private String name[]={"MC","MR","MS","M+","M-","←","CE","C","±","√","7","8","9","/","%","4","5","6","*","1/x","1","2","3","-","=","0",".","+"};

private operateNum op1=new operateNum(),op2=new operateNum();//操作数1,操作数2

private storageField storage=new storageField();//存储区

private String action="op1";//表示要操作的对象 "op1"操作第一个操作数,"op2"操作第二个操作数

private String sign="";//运算符,默认为空

private String screen1,screen2;

private boolean Disable=false;

public calc()

{

super("计算器");

this.setLayout(null);

this.setSize(228, 324);

this.setResizable(false);

JPanel jp=new JPanel(null);

jp.setBounds(10,15,getWidth()-24,getHeight());

jp.setBackground(new Color(217,228,241));

this.getContentPane().setBackground(new Color(217,228,241));

/**显示屏**/

display1=new JTextField("");

display2=new JTextField("0");

display3=new JTextField("");

display1.setEnabled(false);

display2.setEnabled(false);

display3.setEnabled(false);

display1.setBounds(0, 0, 204, 26);

display2.setBounds(20, 20, 184, 34);

display3.setBounds(0, 20, 20, 34);

display1.setHorizontalAlignment(JLabel.RIGHT);

display2.setHorizontalAlignment(JLabel.RIGHT);

display3.setHorizontalAlignment(JLabel.CENTER);

display1.setFont(new Font("宋体",Font.PLAIN,12));

display2.setFont(new Font("宋体",Font.BOLD,20));

display3.setFont(new Font("宋体",Font.PLAIN,20));

display1.setDisabledTextColor(Color.BLACK);

display2.setDisabledTextColor(Color.BLACK);

display3.setDisabledTextColor(Color.BLACK);

display1.setBorder(new LineBorder(new Color(242,247,252)));

display2.setBorder(new LineBorder(new Color(242,247,252)));

display3.setBorder(new LineBorder(new Color(242,247,252)));

display1.setBackground(n

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值