`
feargod
  • 浏览: 43169 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

java实现简易计算器

阅读更多

import javax.swing.JTextField;


public class Culator {

 private static final String String = null;
 JTextField op;
 private String re;

 /**
  * @param args
  */
 public static void main(String[] args) {
  Culator cul = new Culator();
  cul.init();
  // TODO Auto-generated method stub

 }
 public void init(){
  javax.swing.JFrame frame = new javax.swing.JFrame();
  frame.setTitle("计算器");
  java.awt.FlowLayout f1= new java.awt.FlowLayout();
  frame.setLayout(f1);
  javax.swing.JMenuBar cai = createMB();
  frame.setJMenuBar(cai);
  javax.swing.JButton mc = new javax.swing.JButton("MC");
  op= new javax.swing.JTextField("0",25);
  //设置数字从右边开始显示
  op.setHorizontalAlignment(JTextField.RIGHT); 
  //设置按钮
  javax.swing.JButton mr = new javax.swing.JButton("MR");
  javax.swing.JButton ms = new javax.swing.JButton("MS");
  javax.swing.JButton mp = new javax.swing.JButton("M+");
  javax.swing.JButton mm = new javax.swing.JButton("M-");
  javax.swing.JButton delete = new javax.swing.JButton(" ← ");
  javax.swing.JButton ce = new javax.swing.JButton("CE ");
  javax.swing.JButton c = new javax.swing.JButton(" C  ");
  javax.swing.JButton pm = new javax.swing.JButton("  ± ");
  javax.swing.JButton r = new javax.swing.JButton(" √ ");
  javax.swing.JButton seven = new javax.swing.JButton("  7  ");
  javax.swing.JButton eight = new javax.swing.JButton("  8  ");
  javax.swing.JButton nine = new javax.swing.JButton("  9  ");
  javax.swing.JButton under = new javax.swing.JButton("  /  ");
  javax.swing.JButton percent = new javax.swing.JButton(" % ");
  javax.swing.JButton four = new javax.swing.JButton("  4  ");
  javax.swing.JButton five = new javax.swing.JButton("  5  ");
  javax.swing.JButton six = new javax.swing.JButton("  6  ");
  javax.swing.JButton and = new javax.swing.JButton("  * ");
  javax.swing.JButton ds = new javax.swing.JButton("1/x");
  javax.swing.JButton one = new javax.swing.JButton("  1  ");
  javax.swing.JButton two = new javax.swing.JButton("  2  ");
  javax.swing.JButton three = new javax.swing.JButton("  3  ");
  javax.swing.JButton m = new javax.swing.JButton("  - ");
  javax.swing.JButton equal = new javax.swing.JButton("  =  ");
  javax.swing.JButton zero = new javax.swing.JButton("                     0                     ");
  javax.swing.JButton dot = new javax.swing.JButton("  .  ");
  javax.swing.JButton plus = new javax.swing.JButton("  +  ");
  //添加按钮
  frame.add(op);
  frame.add(mc);
  frame.add(mr);
  frame.add(ms);
  frame.add(mp);
  frame.add(mm);
  frame.add(delete);
  frame.add(ce);
  frame.add(c);
  frame.add(pm);
  frame.add(r);
  frame.add(seven);
  frame.add(eight);
  frame.add(nine);
  frame.add(under);
  frame.add(percent);
  frame.add(four);
  frame.add(five);
  frame.add(six);
  frame.add(and);
  frame.add(ds);
  frame.add(one);
  frame.add(two);
  frame.add(three);
  frame.add(m);
  frame.add(equal);
  frame.add(zero);
  frame.add(dot);
  frame.add(plus);
  frame.setSize(290,300);
  //实例化一个Caculate类
  Caculate cal = new Caculate(op);
  //增加监听
  op.addActionListener(cal);
  mc.addActionListener(cal);
  mr.addActionListener(cal);
  ms.addActionListener(cal);
  mp.addActionListener(cal);
  mm.addActionListener(cal);
  delete.addActionListener(cal);
  ce.addActionListener(cal);
  c.addActionListener(cal);
  pm.addActionListener(cal);
  r.addActionListener(cal);
  seven.addActionListener(cal);
  eight.addActionListener(cal);
  nine.addActionListener(cal);
  under.addActionListener(cal);
  percent.addActionListener(cal);
  four.addActionListener(cal);
  five.addActionListener(cal);
  six.addActionListener(cal);
  and.addActionListener(cal);
  ds.addActionListener(cal);
  one.addActionListener(cal);
  two.addActionListener(cal);
  three.addActionListener(cal);
  m.addActionListener(cal);
  equal.addActionListener(cal);
  zero.addActionListener(cal);
  dot.addActionListener(cal);
  plus.addActionListener(cal);
  frame.setDefaultCloseOperation(3);
  frame.setResizable(false);
  frame.setVisible(true);
  
 }
 //创建一个设置TextField窗口容的函数
 //public void setOp(String re){
 // op.setText(re);
 //}
 //创建一个常带有菜单的菜单条,就加到JFrame上显示
 private javax.swing.JMenuBar createMB(){
  //创建菜单条
  javax.swing.JMenuBar mb = new javax.swing.JMenuBar();
  //创建查看菜单
  javax.swing.JMenu view = new javax.swing.JMenu("查看(V)");
  //创建菜单项
  javax.swing.JMenuItem biaozhun = new javax.swing.JMenuItem("标准型");
  javax.swing.JMenuItem kexue = new javax.swing.JMenuItem("科学型");
  javax.swing.JMenuItem chengxu = new javax.swing.JMenuItem("程序员");
  javax.swing.JMenuItem tongji = new javax.swing.JMenuItem("统计信息");
  javax.swing.JMenuItem history = new javax.swing.JMenuItem("历史");
  //将菜单项添加到菜单上
  view.add(biaozhun);
  view.add(kexue);
  view.add(chengxu);
  view.add(tongji);
  view.add(history);
  //创建编辑菜单
  javax.swing.JMenu operation = new javax.swing.JMenu("编辑(O)");
  //创建菜单项
  javax.swing.JMenuItem copy = new javax.swing.JMenuItem("复制");
  javax.swing.JMenuItem paste = new javax.swing.JMenuItem("黏贴");
  javax.swing.JMenuItem hr = new javax.swing.JMenuItem("历史记录");
  //将菜单项添加到菜单上
  operation.add(copy);
  operation.add(paste);
  operation.add(hr);
  //创建帮助菜单
  javax.swing.JMenu help = new javax.swing.JMenu("帮助(H)");
  //创建帮助菜单项
  javax.swing.JMenuItem vh = new javax.swing.JMenuItem("查看帮助");
  javax.swing.JMenuItem about = new javax.swing.JMenuItem("关于计算器");
  //将菜单项添加到菜单上
  help.add(vh);
  help.add(about);
  //加上一个分隔条
  help.addSeparator();
  //将菜单添加到菜单条上
  mb.add(view);
  mb.add(operation);
  mb.add(help);
  return mb;
  
  
  
  
 }
 

}
//定义计算的类

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

import javax.swing.JTextField;


public class Caculate implements ActionListener {
 //设置属性
 private String data;
 private JTextField text;
 private String result = "0";
 private boolean start_new = false;
 private double last_value = 0;
 private String ope = "";
 private double value = 0;
 public String getResult (){
  return result;
 }
 //定义一个构造方法
 public Caculate(JTextField text){
  this.text = text;
 }
  @Override//按钮事件处理
 public void actionPerformed(ActionEvent cal) {
  // TODO Auto-generated method stub
  data = cal.getActionCommand();
  data = data.trim();
  if("0123456789".indexOf(data) != -1){
   numButton(data);
  }else if (".".indexOf(data) != -1){
   dotButton(data);
  }else if ("+-*/".indexOf(data) != -1){
   operateButton(data);
  }else if ("=".indexOf(data)!=-1){
   equalButton();
  }
  //System.out.println(data);
  System.out.println(result);
  text.setText(result);
 }
 //计算程序
 private void numButton(String da){
  if(!start_new){
   result = result + da;
  }
  else{
   result = da;
  }
  while (result.startsWith("0")&&!result.startsWith("0.")&&result.length()>0){
   result = result.substring(1);
  }
  start_new = false;
 }
 private void dotButton(String da){
  if(da.indexOf(".")!= -1){
   result = result + da;
  }
 }
 private void operateButton(String da){
  if(result.length()>0){
   last_value = Double.parseDouble(result);
   ope = da;
   start_new = true;
  }
 }
 private void equalButton(){
  value = Double.parseDouble(result);
  if(ope.equals("+")){
   result = String.valueOf(last_value + value);
  }
  else if(ope.equals("-")){
   result = String.valueOf(last_value - value);
  }else if(ope.equals("*")){
   result = String.valueOf(last_value * value);
  }else if(ope.equals("/")){
   if(value == 0){
    result = "ERROR";
   }
   else{
    result = String.valueOf(last_value / value);
   }
  }
  // 去掉结尾的“.0000...”  
        if (result.matches(".+\\.0+")) {  
            result = result.substring(0, result.lastIndexOf("."));  
        }  
 
        // 设置状态  
        start_new = true;  
        ope = "";  

  
 }

}

1
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics