package calculator;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Calculator{
double shuju[] =new double[99];//寄存数据信息
double daan; //答案显示数据
double zhongjianshuju[]=new double[99]; //寄存中间运算数据
private JFrame CalculatorFrame = null;
private JButton[] CalculatorButton = new JButton[10];
private JButton CalculatorButton0 = new JButton("0");
private JButton CalculatorButtonPoint =new JButton(".");
private JButton CalculatorButtonEnter =new JButton("=");;
private JButton CalculatorButtonPlus = new JButton("+");
private JButton CalculatorButtonDecrease = new JButton("-");
private JButton CalculatorButtonMuti = new JButton("*");
private JButton CalculatorButtonDivide = new JButton("/");
private JButton CalculatorButtonBackspace =new JButton("←");
JTextField SJ =new JTextField(10);//输入数据显示器
JTextField DA =new JTextField(15);//答案显示器
String zifushuju;
public Calculator()
{
CalculatorFrame = new JFrame("计算器");//创建框架
Toolkit tk = Toolkit.getDefaultToolkit();//获取屏幕高度,确定窗口大小
Dimension screenSize = tk.getScreenSize();
int screenHeight = screenSize.height;
int screenWidth = screenSize.width;
CalculatorFrame.setSize(screenWidth/6,screenHeight/3);
CalculatorFrame.setResizable(false);
CalculatorFrame.setLocationRelativeTo(null);
CalculatorFrame.setVisible(true);
CalculatorFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container WZ = CalculatorFrame.getContentPane(); //子容器控制
WZ.setLayout(new BoxLayout(WZ,BoxLayout.Y_AXIS));
JPanel QY[] = new JPanel[7];
int i;
for(i=0;i<6;i++){//创建子容器(区域)表示各种区,运算区,神马的
QY[i]=new JPanel();
CalculatorFrame.add(QY[i]);
}
for(i=1;i<10;i++){
CalculatorButton[i] = new JButton(""+i);
CalculatorButton[i].addActionListener(new JT());
if(i>0&&i<=3){
QY[4].add(CalculatorButton[i]);
}
if(i>3&&i<7){
QY[3].add(CalculatorButton[i]);
}
if(i>6&&i<10){
QY[2].add(CalculatorButton[i]);
}
}
CalculatorButtonPlus.addActionListener(new JT());
CalculatorButton0.addActionListener(new JT());
CalculatorButtonDecrease.addActionListener(new JT());
CalculatorButtonMuti.addActionListener(new JT());
CalculatorButtonDivide.addActionListener(new JT());
CalculatorButtonEnter.addActionListener(new JT());
CalculatorButtonBackspace.addActionListener(new JT());
CalculatorButtonPoint.addActionListener(new JT());
SJ.setHorizontalAlignment(JTextField.RIGHT);
SJ.setEnabled(false);
DA.setEnabled(false);
DA.setHorizontalAlignment(JTextField.RIGHT);
QY[0].add(DA);
QY[1].add(SJ);
QY[1].add(CalculatorButtonBackspace);
QY[2].add(CalculatorButtonDivide);
QY[3].add(CalculatorButtonMuti);
QY[4].add(CalculatorButtonDecrease);
QY[5].add(CalculatorButtonPoint);
QY[5].add(CalculatorButton0);
QY[5].add(CalculatorButtonEnter);
QY[5].add(CalculatorButtonPlus);
}
public class JT implements ActionListener //监听(JT)按钮
{
public void actionPerformed(ActionEvent XY)//对每个每个按钮做出响应(XY)
{
if(XY.getSource()==CalculatorButton0)
press0();
else if(XY.getSource()==CalculatorButton[1])
press1();
else if(XY.getSource()==CalculatorButton[2])
press2();
else if(XY.getSource()==CalculatorButton[3])
press3();
else if(XY.getSource()==CalculatorButton[4])
press4();
else if(XY.getSource()==CalculatorButton[5])
press5();
else if(XY.getSource()==CalculatorButton[6])
press6();
else if(XY.getSource()==CalculatorButton[7])
press7();
else if(XY.getSource()==CalculatorButton[8])
press8();
else if(XY.getSource()==CalculatorButton[9])
press9();
else if(XY.getSource()==CalculatorButtonPoint)
pressPoint();
else if(XY.getSource()==CalculatorButtonEnter)
pressEnter();
else if(XY.getSource()==CalculatorButtonPlus)
pressPlus();
else if(XY.getSource()==CalculatorButtonDecrease)
pressDecrease();
else if(XY.getSource()==CalculatorButtonMuti)
pressMuti();
else if(XY.getSource()==CalculatorButtonDivide)
pressDivide();
else if(XY.getSource()==CalculatorButtonBackspace)
pressBackspace();
}
}
int i=0;
int a=0;
int b=0;
public void press0(){
if(shuju[i]!=0&&b==0){
shuju[i]=shuju[i]*10;
}
if(shuju[i]==0&&b==0){
shuju[i]=0;
}
if(b==1){
zifushuju+="0";
}
SJ.setText(""+shuju[i]);
}
public void press1(){
if(b==0){
if(shuju[i]!=0){
shuju[i]=shuju[i]*10+1;
}
if(shuju[i]==0){
shuju[i]=1;
}
SJ.setText(""+shuju[i]);
}
if(b==1){
zifushuju+="1";
SJ.setText(zifushuju);
}
}
public void press2(){
if(b==0){
if(shuju[i]!=0){
shuju[i]=shuju[i]*10+2;
}
if(shuju[i]==0){
shuju[i]=2;
}
SJ.setText(""+shuju[i]);
}
if(b==1){
zifushuju+="2";
SJ.setText(zifushuju);
}
}
public void press3(){
if(b==0){
if(shuju[i]!=0){
shuju[i]=shuju[i]*10+3;
}
if(shuju[i]==0){
shuju[i]=3;
}
SJ.setText(""+shuju[i]);
}
if(b==1){
zifushuju+="3";
SJ.setText(zifushuju);
}
}
public void press4(){
if(b==0){
if(shuju[i]!=0){
shuju[i]=shuju[i]*10+4;
}
if(shuju[i]==0){
shuju[i]=4;
}
SJ.setText(""+shuju[i]);
}
if(b==1){
zifushuju+="4";
SJ.setText(zifushuju);
}
}
public void press5(){
if(b==0){
if(shuju[i]!=0){
shuju[i]=shuju[i]*10+5;
}
if(shuju[i]==0){
shuju[i]=5;
}
SJ.setText(""+shuju[i]);
}
if(b==1){
zifushuju+="5";
SJ.setText(zifushuju);
}
}
public void press6(){
if(b==0){
if(shuju[i]!=0){
shuju[i]=shuju[i]*10+6;
}
if(shuju[i]==0){
shuju[i]=6;
}
SJ.setText(""+shuju[i]);
}
if(b==1){
zifushuju+="6";
SJ.setText(zifushuju);
}
}
public void press7(){
if(b==0){
if(shuju[i]!=0){
shuju[i]=shuju[i]*10+7;
}
if(shuju[i]==0){
shuju[i]=7;
}
SJ.setText(""+shuju[i]);
}
if(b==1){
zifushuju+="7";
SJ.setText(zifushuju);
}
}
public void press8(){
if(b==0){
if(shuju[i]!=0){
shuju[i]=shuju[i]*10+8;
}
if(shuju[i]==0){
shuju[i]=8;
}
SJ.setText(""+shuju[i]);
}
if(b==1){
zifushuju+="8";
SJ.setText(zifushuju);
}
}
public void press9(){
if(b==0){
if(shuju[i]!=0){
shuju[i]=shuju[i]*10+9;
}
if(shuju[i]==0){
shuju[i]=9;
}
SJ.setText(""+shuju[i]);
}
if(b==1){
zifushuju+="9";
SJ.setText(zifushuju);
}
}
public void pressPoint(){
zifushuju = String.valueOf(shuju[i]);
zifushuju = zifushuju.substring(0,zifushuju.length()-1);
b=1;
SJ.setText(zifushuju);
}
public void pressPlus(){
if(b==1){shuju[i] = Double.parseDouble(zifushuju);}
if(i==0){zhongjianshuju[i]=shuju[i];}
else { switch(a){
case 0:{break;}
case 1:{zhongjianshuju[i]=zhongjianshuju[i-1]+shuju[i];a=0;break;}
case 2:{zhongjianshuju[i]=zhongjianshuju[i-1]-shuju[i];a=0;break;}
case 3:{zhongjianshuju[i]=zhongjianshuju[i-1]*shuju[i];a=0;break;}
case 4:{zhongjianshuju[i]=zhongjianshuju[i-1]/shuju[i];a=0;break;}
}}
a=1;
b=0;
SJ.setText("+");
i++;
}
public void pressDecrease(){
if(b==1){shuju[i] = Double.parseDouble(zifushuju);}
if(i==0){zhongjianshuju[i]=shuju[i];}
else { switch(a){
case 0:{break;}
case 1:{zhongjianshuju[i]=zhongjianshuju[i-1]+shuju[i];a=0;break;}
case 2:{zhongjianshuju[i]=zhongjianshuju[i-1]-shuju[i];a=0;break;}
case 3:{zhongjianshuju[i]=zhongjianshuju[i-1]*shuju[i];a=0;break;}
case 4:{zhongjianshuju[i]=zhongjianshuju[i-1]/shuju[i];a=0;break;}
}}
a=2;
b=0;
SJ.setText("-");
i++;
}
public void pressMuti(){
if(b==1){shuju[i] = Double.parseDouble(zifushuju);}
if(i==0){zhongjianshuju[i]=shuju[i];}
else {switch(a){
case 0:{break;}
case 1:{zhongjianshuju[i]=zhongjianshuju[i-1]+shuju[i];a=0;break;}
case 2:{zhongjianshuju[i]=zhongjianshuju[i-1]-shuju[i];a=0;break;}
case 3:{zhongjianshuju[i]=zhongjianshuju[i-1]*shuju[i];a=0;break;}
case 4:{zhongjianshuju[i]=zhongjianshuju[i-1]/shuju[i];a=0;break;}
}}
a=3;
b=0;
SJ.setText("*");
i++;
}
public void pressDivide(){
if(b==1){shuju[i] = Double.parseDouble(zifushuju);}
if(i==0){zhongjianshuju[i]=shuju[i];}
else {switch(a){
case 0:{break;}
case 1:{zhongjianshuju[i]=zhongjianshuju[i-1]+shuju[i];a=0;break;}
case 2:{zhongjianshuju[i]=zhongjianshuju[i-1]-shuju[i];a=0;break;}
case 3:{zhongjianshuju[i]=zhongjianshuju[i-1]*shuju[i];a=0;break;}
case 4:{zhongjianshuju[i]=zhongjianshuju[i-1]/shuju[i];a=0;break;}
}}
a=4;
b=0;
SJ.setText("/");
i++;
}
public void pressEnter(){
if(b==0){
if(i==0){daan=shuju[i];}
else{
switch(a){
case 0:{break;}
case 1:{zhongjianshuju[i]=zhongjianshuju[i-1]+shuju[i];a=0;break;}
case 2:{zhongjianshuju[i]=zhongjianshuju[i-1]-shuju[i];a=0;break;}
case 3:{zhongjianshuju[i]=zhongjianshuju[i-1]*shuju[i];a=0;break;}
case 4:{zhongjianshuju[i]=zhongjianshuju[i-1]/shuju[i];a=0;break;}
}
daan=zhongjianshuju[i];}
}
if(b==1){
shuju[i] = Double.parseDouble(zifushuju);
if(i==0){daan=shuju[i];}
else{
switch(a){
case 0:{break;}
case 1:{zhongjianshuju[i]=zhongjianshuju[i-1]+shuju[i];a=0;break;}
case 2:{zhongjianshuju[i]=zhongjianshuju[i-1]-shuju[i];a=0;break;}
case 3:{zhongjianshuju[i]=zhongjianshuju[i-1]*shuju[i];a=0;break;}
case 4:{zhongjianshuju[i]=zhongjianshuju[i-1]/shuju[i];a=0;break;}
}
daan=zhongjianshuju[i];}
}
DA.setText(""+daan);
shuju=new double[99];
zhongjianshuju=new double[99];
shuju[0]=0;
i=0;
b=0;
}
public void pressBackspace(){
shuju[i]=0;
SJ.setText(""+shuju[i]);
}
public static void main(String[] args) {
new Calculator();
}
}
java练笔-计算器
最新推荐文章于 2024-09-06 13:51:27 发布