计算器2
来源:互联网 发布:大华电子秤软件下载 编辑:程序博客网 时间:2024/05/02 02:51
今天花了点时间把昨天出现的bug改了,就是按等号之前必须按一个运算符。并且命名也规范了些,增加了一些功能,比如取模运算、取负号、删除功能,代码也比之前的好阅读些,计算器界面也有改变,但是有个问题,每次算完一个结果后,如果还想计算别的,就必须把之前的结果清0,否则会出错。
Calculator 类
import java.awt.Color;
import java.awt.event.*;
import javax.swing.*;
public class Calculator{
private char operator;
//private int result;
private double ss=0;//储存结果
private String s="";//储存第一个数
private int ff;
private String f="";//储存第二个数
//private boolean dis=true;//判断操作数应该存在ss里还是ff里
private final javax.swing.JButton b0=new javax.swing.JButton("0");
private final javax.swing.JButton b1=new javax.swing.JButton("1");
private final javax.swing.JButton b2=new javax.swing.JButton("2");
private final javax.swing.JButton b3=new javax.swing.JButton("3");
private final javax.swing.JButton b4=new javax.swing.JButton("4");
private final javax.swing.JButton b5=new javax.swing.JButton("5");
private final javax.swing.JButton b6=new javax.swing.JButton("6");
private final javax.swing.JButton b7=new javax.swing.JButton("7");
private final javax.swing.JButton b8=new javax.swing.JButton("8");
private final javax.swing.JButton b9=new javax.swing.JButton("9");
private final javax.swing.JButton b_add=new javax.swing.JButton("+");
private final javax.swing.JButton b_sub=new javax.swing.JButton("-");
private final javax.swing.JButton b_mul=new javax.swing.JButton("*");
private final javax.swing.JButton b_div=new javax.swing.JButton("/");
private final javax.swing.JButton b_equals=new javax.swing.JButton("=");
private final javax.swing.JButton b_ce=new javax.swing.JButton("ce");
private final javax.swing.JButton b_de=new javax.swing.JButton("de");
private final javax.swing.JButton b_dot=new javax.swing.JButton(".");
private final javax.swing.JButton b_mod=new javax.swing.JButton("%");
private final javax.swing.JButton b_neg=new javax.swing.JButton("+/-");
private final javax.swing.JButton b_pon=new javax.swing.JButton(".");
private final javax.swing.JTextField jtf=new javax.swing.JTextField(25);
public void show(){
//设置窗体
javax.swing.JFrame frame=new javax.swing.JFrame();
javax.swing.JPanel jpb=new javax.swing.JPanel();
javax.swing.JPanel jpt=new javax.swing.JPanel();
frame.setTitle("计算器");
frame.setSize(300,300);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(3);
frame.setVisible(true);
frame.setResizable(false);
frame.add(jpb);
frame.add(jpt);
java.awt.BorderLayout bl=new java.awt.BorderLayout();
frame.add(jpt,bl.NORTH);
frame.add(jpb,bl.CENTER);//两个面板布局
//设置文本框
java.awt.FlowLayout fl=new java.awt.FlowLayout();//文本框布局
jpt.setLayout(fl);
jpt.add(jtf);
jpb.setBackground(Color.magenta);
jpt.setBackground(Color.magenta);
//设置按钮
java.awt.GridLayout gl=new java.awt.GridLayout(5,4,3,3);//按钮布局(网格布局)
jpb.setLayout(gl);
//吧按钮添加到面板上
jpb.add(b_ce);
jpb.add(b_de);
jpb.add(b_neg);
jpb.add(b_mod);
jpb.add(b1);
jpb.add(b2);
jpb.add(b3);
jpb.add(b_add);
jpb.add(b4);
jpb.add(b5);
jpb.add(b6);
jpb.add(b_sub);
jpb.add(b7);
jpb.add(b8);
jpb.add(b9);
jpb.add(b_mul);
jpb.add(b0);
jpb.add(b_pon);
jpb.add(b_equals);
jpb.add(b_div);
//事件监听
ActionListener button_listener= new MyActionListener(this);
b0.addActionListener(button_listener);
b1.addActionListener(button_listener);
b2.addActionListener(button_listener);
b3.addActionListener(button_listener);
b4.addActionListener(button_listener);
b5.addActionListener(button_listener);
b6.addActionListener(button_listener);
b7.addActionListener(button_listener);
b8.addActionListener(button_listener);
b9.addActionListener(button_listener);
b_add.addActionListener(button_listener);
b_sub.addActionListener(button_listener);
b_mul.addActionListener(button_listener);
b_div.addActionListener(button_listener);
b_equals.addActionListener(button_listener);
b_ce.addActionListener(button_listener);
b_mod.addActionListener(button_listener);
b_neg.addActionListener(button_listener);
b_de.addActionListener(button_listener);
b_pon.addActionListener(button_listener);
}
public double gets(){
return ss;
}
public String getSs(){
return s;
}
public JButton getb0(){
return b0;
}public JButton getb1(){
return b1;
}
public JButton getb2(){
return b2;
}
public JButton getb3(){
return b3;
}
public JButton getb4(){
return b4;
}
public JButton getb5(){
return b5;
}
public JButton getb6(){
return b6;
}
public JButton getb7(){
return b7;
}
public JButton getb8(){
return b8;
}
public JButton getb9(){
return b9;
}
public JButton getb_add(){
return b_add;
}
public JButton getb_sub(){
return b_sub;
}
public JButton getb_mul(){
return b_mul;
}
public JButton getb_div(){
return b_div;
}
public JButton getb_equals(){
return b_equals;
}
public JButton getb_neg(){
return b_neg;
}
public JButton getb_mod(){
return b_mod;
}
public JButton getb_de(){
return b_de;
}
public JButton getb_ce(){
return b_ce;
}
public char getoperator(){
return operator;
}
public JTextField getjtf(){
return jtf;
}
public JButton getb_pon(){
return b_pon;
}
}
MyActionListener类
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
public class MyActionListener implements ActionListener{
private Calculator cal;
private javax.swing.JTextField jtf;
private double ss;
private String s;
private char operator;
private JButton b0;
private JButton b1;
private JButton b2;
private JButton b3;
private JButton b4;
private JButton b5;
private JButton b6;
private JButton b7;
private JButton b8;
private JButton b9;
private JButton b_add;
private JButton b_sub;
private JButton b_mul;
private JButton b_div;
private JButton b_de;
private JButton b_ce;
private JButton b_mod;
private JButton b_neg;
private JButton b_equals;
private JButton b_pon;
//构造方法,为了接参数
public MyActionListener(Calculator cal){
this.cal=cal;
this.ss=cal.gets();
this.s=cal.getSs();
this.operator=cal.getoperator();
this.jtf=cal.getjtf();
this.b0=cal.getb0();
this.b1=cal.getb1();
this.b2=cal.getb2();
this.b3=cal.getb3();
this.b4=cal.getb4();
this.b5=cal.getb5();
this.b6=cal.getb6();
this.b7=cal.getb7();
this.b8=cal.getb8();
this.b9=cal.getb9();
this.b_add=cal.getb_add();
this.b_sub=cal.getb_sub();
this.b_mul=cal.getb_mul();
this.b_div=cal.getb_div();
this.b_equals=cal.getb_equals();
this.b_mod=cal.getb_mod();
this.b_neg=cal.getb_neg();
this.b_de=cal.getb_de();
this.b_ce=cal.getb_ce();
this.b_pon=cal.getb_pon();
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==b0){ //如果按下的是数字0
s=s.concat("0");
jtf.setText(s);
}
else if(e.getSource()==b1){ //如果按下的是数字1
s=s.concat("1");
jtf.setText(s);
}
else if(e.getSource()==b2){ //如果按下的是数字2
s=s.concat("2");
jtf.setText(s);
}
else if(e.getSource()==b3){ //如果按下的是数字3
s=s.concat("3");
jtf.setText(s);
}
else if(e.getSource()==b4){ //如果按下的是数字4
s=s.concat("4");
jtf.setText(s);
}
else if(e.getSource()==b5){ //如果按下的是数字5
s=s.concat("5");
jtf.setText(s);
}
else if(e.getSource()==b6){ //如果按下的是数字6
s=s.concat("6");
jtf.setText(s);
}
else if(e.getSource()==b7){ //如果按下的是数字7
s=s.concat("7");
jtf.setText(s);
}
else if(e.getSource()==b8){ //如果按下的是数字8
s=s.concat("8");
jtf.setText(s);
}
else if(e.getSource()==b9){ //如果按下的是数字9
s=s.concat("9");
jtf.setText(s);
}
else if(e.getSource()==b_pon){ //如果按下的是小数点
s=s.concat(".");
jtf.setText(s);
}
else if(e.getSource()==b_add){ //如果按下的是加号
s=jtf.getText();
operator='+';
ss=Double.parseDouble(s);
s="";
}
else if(e.getSource()==b_sub){ //如果按下的是减号
s=jtf.getText();
operator='-';
ss=Double.parseDouble(s);
s="";
}
else if(e.getSource()==b_mul){ //如果按下的是乘号
s=jtf.getText();
operator='*';
ss=Double.parseDouble(s);
s="";
}
else if(e.getSource()==b_div){ //如果按下的是除号
s=jtf.getText();
operator='/';
ss=Double.parseDouble(s);
s="";
}
else if(e.getSource()==b_mod){ //如果按下的是%
s=jtf.getText();
operator='%';
ss=Double.parseDouble(s);
s="";
}
else if(e.getSource()==b_neg){ //如果按下的是取负号
s=jtf.getText();
ss=Double.parseDouble(s)*(-1);
s=String.valueOf(ss);
jtf.setText(s);
}
else if(e.getSource()==b_equals){
if(operator=='+'){ //处理加法运算
ss=ss+Double.parseDouble(s);;
s=String.valueOf(ss);
jtf.setText(s);
}
if(operator=='-'){ //处理减法运算
ss=ss-Double.parseDouble(s);;
s=String.valueOf(ss);
jtf.setText(s);
}
if(operator=='*'){ //处理乘法运算
ss=ss*Double.parseDouble(s);;
s=String.valueOf(ss);
jtf.setText(s);
}
if(operator=='/'){ //处理除法运算
if(Double.parseDouble(s)==0){
s="error";
jtf.setText(s);
}
else{
ss=ss/Double.parseDouble(s);;
s=String.valueOf(ss);
jtf.setText(s);
}
}
if(operator=='%'){ //处理取模运算
ss=ss%Double.parseDouble(s);
s=String.valueOf(ss);
jtf.setText(s);
}
}
else if(e.getSource()==b_ce){ // 处理清0操作
s="";
ss=0;
jtf.setText(s);
}
else if(e.getSource()==b_de){ //处理删除操作
s=jtf.getText();
s=s.substring(0, s.length()-1);
jtf.setText(s);
}
}
}
- 计算器2
- 计算器-2
- 计算器2
- 计算器2
- Java计算器(2)
- 概论2--简单计算器
- 计算器2------C#窗体
- Android学习-计算器2
- 项目2:个人所得税计算器
- 9-2 个人所得税计算器
- 计算器 abacus 2 发布
- 计算器类2
- 【java】计算器2
- 计算器(2)
- 制作计算器2
- 钱宝计算器2
- 计算器(2)
- 计算器
- 算法分析与设计之五大常用算法 (V)—— 分支限界法
- java concurrent 探秘
- 删除ORACLE 11g 数据库安装注册表
- 黑马程序员java学习—String类
- 重写equal 的同时为什么必须重写hashcode
- 计算器2
- java 操作MongoDB—Hello World
- 第二次离职了,怀念一下
- c#正则表达式总结
- 利用Log4j创建日志服务器
- NIM游戏(取m堆游戏)
- Android---管理音频焦点
- ADO.NET 连接环境与非连接环境
- STKX组件技术在星地链路中的仿真模式研究