JAVA初学,写了个计算器

package calculator;


import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


import javax.swing.*;
public class Calculator {
 
 public static void main(String[] args) {
  MyFrame mm = new MyFrame();
 }
}
class MyFrame extends Frame {
 TextField tf = new TextField(25);
 JButton backspace= new JButton("BS");
 JButton CE = new JButton("CE");
 JButton b0 = new JButton("0");
 JButton eql = new JButton("=");
 JButton add = new JButton("+");
 JButton b1 = new JButton("1");
 JButton b2 = new JButton("2");
 JButton b3 = new JButton("3");
 JButton b4 = new JButton("4");
 JButton b5 = new JButton("5");
 JButton b6 = new JButton("6");
 JButton b7 = new JButton("7");
 JButton b8 = new JButton("8");
 JButton b9 = new JButton("9");
 JButton dvi = new JButton("÷");
 JButton mul = new JButton("*");
 JButton sub = new JButton("-");
 JButton C = new JButton(".");
public  MyFrame() {
  
  JLabel subject = new JLabel("                         计算器");
  subject.setForeground(Color.black);
  JPanel pla = new JPanel();
  pla.add(subject);
  backspace.addActionListener(new listen(this));
  CE.addActionListener(new listen(this));
  C.addActionListener(new listen(this));
  b0.addActionListener(new listen(this));
  b1.addActionListener(new listen(this));
  b2.addActionListener(new listen(this));
  b3.addActionListener(new listen(this));
  b4.addActionListener(new listen(this));
  b5.addActionListener(new listen(this));
  b6.addActionListener(new listen(this));
  b7.addActionListener(new listen(this));
  b8.addActionListener(new listen(this));
  b9.addActionListener(new listen(this));
  add.addActionListener(new listen(this));
  sub.addActionListener(new listen(this));
  mul.addActionListener(new listen(this));
  dvi.addActionListener(new listen(this));
  eql.addActionListener(new listen(this));
  
  JFrame name = new JFrame("McNema");
  JPanel p = new JPanel();
  p.setLayout(new GridLayout(3,1,0,4));
  JPanel p1 = new JPanel();
  JPanel p2 = new JPanel();
  p2.setLayout(new GridLayout(4,4,4,4));
  p2.add(b7);
  p2.add(b8);
  p2.add(b9);
  p2.add(dvi);
  p2.add(b4);
  p2.add(b5);
  p2.add(b6);
  p2.add(mul);
  p2.add(b1);
  p2.add(b2);
  p2.add(b3);
  p2.add(sub);
  p2.add(b0);
  p2.add(add);
  p2.add(eql);
  p2.add(C);
  JPanel p3 = new JPanel();
  p3.setLayout(new GridLayout(1,2,2,2));
  //Panel p4 = new Panel();
 // BorderLayout s = new BorderLayout();
 // p4.setLayout(new GridLayout(1,3,0,0));
 // p4.add(b0, BorderLayout.WEST);
 // p4.add(eql, BorderLayout.CENTER);
 // p4.add(add, BorderLayout.EAST);
  p1.add(tf);// 放置的是计算器的输入框
  CE.setForeground(Color.black);
  C.setForeground(Color.black);
  backspace.setForeground(Color.black);
  p3.add(backspace);
  p3.add(CE);
  p.add(subject, BorderLayout.NORTH);
  p.add(p1, BorderLayout.CENTER);
  p.add(p3, BorderLayout.SOUTH);
  name.setLayout(new BorderLayout(30, 5));
  name.add(p, BorderLayout.NORTH);
  name.add(p2, BorderLayout.CENTER);
 // name.add(p4, BorderLayout.SOUTH);
  name.pack();
  name.setVisible(true);
  name.setLocation(900, 300);
  name.setSize(200, 300);
  name.setResizable(false);
 }
}
class listen implements ActionListener {
 MyFrame dd;
 listen(MyFrame ds) {
  this.dd = ds;
 }
 public static Double zhi = 0.0;
 public static Double nextzhi = 0.0;
 public static Double sum = 0.0;
 public static int fuhao;
 public void actionPerformed(ActionEvent e) {
  // TODO Auto-generated method stub
  if (dd.b1 == e.getSource()) {
   dd.tf.setText(dd.tf.getText() + "1");
  } else if (dd.b2 == e.getSource()) {
   dd.tf.setText(dd.tf.getText() + "2");
  } else if (dd.b3 == e.getSource()) {
   dd.tf.setText(dd.tf.getText() + "3");
  } else if (dd.b4 == e.getSource()) {
   dd.tf.setText(dd.tf.getText() + "4");
  } else if (dd.b5 == e.getSource()) {
   dd.tf.setText(dd.tf.getText() + "5");
  } else if (dd.b6 == e.getSource()) {
   dd.tf.setText(dd.tf.getText() + "6");
  } else if (dd.b7 == e.getSource()) {
   dd.tf.setText(dd.tf.getText() + "7");
  } else if (dd.b8 == e.getSource()) {
   dd.tf.setText(dd.tf.getText() + "8");
  } else if (dd.b9 == e.getSource()) {
   dd.tf.setText(dd.tf.getText() + "9");
  } else if (dd.C == e.getSource()) {
 if(dd.tf.getText().indexOf(".")<0)
  dd.tf.setText(dd.tf.getText() + ".");
 else
 ;
  } else if (dd.mul == e.getSource()) {// 计算乘法
   fuhao = 1;
   zhi = Double.valueOf(dd.tf.getText());// 得到了文本框里的值;
   dd.tf.setText("");
  } else if (dd.dvi == e.getSource()) {// 计算除法
   fuhao = 2;
   zhi = Double.valueOf(dd.tf.getText());// 得到了文本框里的值;
   dd.tf.setText("");
  } else if (dd.sub == e.getSource()) {// 计算减法
   fuhao = 3;
   zhi = Double.valueOf(dd.tf.getText());// 得到了文本框里的值;
   dd.tf.setText("");
  } else if (dd.add == e.getSource()) {// 计算加法
  fuhao = 4;
  zhi = Double.valueOf(dd.tf.getText());// 得到了文本框里的值;
  dd.tf.setText("");
  }else if (e.getSource()==dd.backspace) {// 退格 得到里面的值.从最后的一位开始删除
   StringBuffer sb = new StringBuffer(dd.tf.getText());
   int changdu = sb.length();
   if (changdu > 0) {
    sb.deleteCharAt(changdu - 1);// 删除的是最后的一位
    dd.tf.setText(sb.toString());
   } else {
    dd.tf.setText("");
   }
  } else if (dd.CE == e.getSource()) {// 清零
   zhi = 0.0;
   nextzhi = 0.0;
   sum = 0.0;
   dd.tf.setText("");
  }else if (dd.C == e.getSource()) {// 清零
    zhi = 0.0;
    nextzhi = 0.0;
    sum = 0.0;
    dd.tf.setText("");
    }else if (dd.b0 == e.getSource()) {
   dd.tf.setText(dd.tf.getText() + "0");
  } else if (dd.eql == e.getSource()) {// 等号;
   nextzhi = Double.valueOf(dd.tf.getText());// 得到了文本框里的值;
   dd.tf.setText("");
   if (fuhao == 1) {// 计算的是乘法;
    sum = zhi * nextzhi;
    dd.tf.setText(sum + "");
   } else if (fuhao == 2) {// 计算除法
  if(nextzhi==0){
  dd.tf.setText("error");
  }
  else{
  sum = zhi / nextzhi;
    dd.tf.setText(String.valueOf(sum));
  } 
    //dd.tf.setText(sum + "");
   } else if (fuhao == 3) {// 计算减法
    sum = zhi - nextzhi;
    dd.tf.setText(sum + "");
   } else if (fuhao == 4) {// 符号为四算的是加法;
    sum = zhi + nextzhi;
    dd.tf.setText(String.valueOf(sum));
   }
  } 
 }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值