注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

独立观察员·网易

分享万岁

 
 
 

日志

 
 

java编程之简单计算器  

2012-07-20 16:50:00|  分类: 原新浪博客的 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.math.*;

class Calculator extends JFrame {
 
 
 private static final long serialVersionUID = 1L;
 
 Calculator(){
  setTitle("简单计算器  V1.2");
   
 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(400,200,300,230);

    setLayout(new BorderLayout());   
    JPanel p1 = new JPanel();
    JPanel p2 = new JPanel();
    add(p1,BorderLayout.NORTH);
    add(p2,BorderLayout.SOUTH);
    JPanel p3 = new JPanel();
    JPanel p4 = new JPanel();
    p2.add(p3);
    p1.add(p4);
    p4.setLayout(new BorderLayout());
    p3.setLayout(new GridLayout(4,5,3,3));
   
   
    p4.add(text2,BorderLayout.NORTH);
    p4.add(text,BorderLayout.SOUTH);
    p3.add(bt7);
    p3.add(bt8);
    p3.add(bt9);
    p3.add(btadd);
    p3.add(btback);
    p3.add(bt4);
    p3.add(bt5);
    p3.add(bt6);
    p3.add(btMinus);
    p3.add(btC);
    p3.add(bt1);
    p3.add(bt2);
    p3.add(bt3);
    p3.add(btmul);
    p3.add(btCE);
    p3.add(bt0);
    p3.add(btzf);
    p3.add(btPoint);
    p3.add(btdiv);
    p3.add(btden);
   
    MyListener listener = new MyListener();
    bt1.addActionListener(listener);
    bt2.addActionListener(listener);
    bt3.addActionListener(listener);
    bt4.addActionListener(listener);
    bt5.addActionListener(listener);
    bt6.addActionListener(listener);
    bt7.addActionListener(listener);
    bt8.addActionListener(listener);
    bt9.addActionListener(listener);
    bt0.addActionListener(listener);
    btadd.addActionListener(listener);
    btMinus.addActionListener(listener);
    btmul.addActionListener(listener);
    btdiv.addActionListener(listener);
    btPoint.addActionListener(listener);
    btC.addActionListener(listener);
    btCE.addActionListener(listener);
    btden.addActionListener(listener);
    btzf.addActionListener(listener);
    btback.addActionListener(listener);
   
    text.setHorizontalAlignment(JTextField.RIGHT);
    text.setEditable(false);
    text2.setEditable(false);
   
 }
   
 private JTextField text = new JTextField("0",23);
 private JTextArea text2 = new JTextArea("0",1,23);
     
 private JButton btden = new JButton("=");
 private JButton bt1 = new JButton("1");
 private JButton bt2 = new JButton("2");
 private JButton bt3 = new JButton("3");
 private JButton bt4 = new JButton("4");
 private JButton bt5 = new JButton("5");
 private JButton bt6 = new JButton("6");
 private JButton bt7 = new JButton("7");
 private JButton bt8 = new JButton("8");
 private JButton bt9 = new JButton("9");
 private JButton bt0 = new JButton("0");
 private JButton btzf = new JButton("+/-");
 private JButton btPoint = new JButton(".");
 private JButton btmul = new JButton("*");
 private JButton btdiv = new JButton("/");
 private JButton btadd = new JButton("+");
 private JButton btback = new JButton("←");
 private JButton btC = new JButton("C");
 private JButton btCE = new JButton("CE");
 private JButton btMinus = new JButton("-");
 
 private String str = "" ;
 private BigDecimal b1 ;
 private BigDecimal b2 ;
 private BigDecimal b3 ;
 private int sign = 0;
 private int zf = 0;
 private int sign2 = 0;
 
 class MyListener implements ActionListener{
     public void actionPerformed(ActionEvent e){
      if ((JButton)e.getSource() == bt1){
       if(sign == 5 ){
        str = "";
        sign = 0;
        zf = 0;
       }
       if(str == "0")
        str = "";
       str += "1";
       text.setText(str);
       if(sign != 0 )
        text2.append("1");
       else
           text2.setText(str);   
      }
      if ((JButton)e.getSource() == bt2){       
       if(sign == 5 ){
        str = "";
        sign = 0;
        zf = 0;
       }
       if(str == "0")
        str = "";
       str += "2";
       text.setText(str);
       if(sign != 0 )
        text2.append("2");
       else
           text2.setText(str);  
      }
      if ((JButton)e.getSource() == bt3){
       if(sign == 5 ){
        str = "";
        sign = 0;
        zf = 0;
       }
       if(str == "0")
        str = "";
       str += "3";
       text.setText(str);
       if(sign != 0 )
        text2.append("3");
       else
           text2.setText(str);  
      }
      if ((JButton)e.getSource() == bt4){       
       if(sign == 5 ){
        str = "";
        sign = 0;
        zf = 0;
       }
       if(str == "0")
        str = "";
       str += "4";
       text.setText(str);
       if(sign != 0 )
        text2.append("4");
       else
           text2.setText(str);  
      }
      if ((JButton)e.getSource() == bt5){
       if(sign == 5 ){
        str = "";
        sign = 0;
        zf = 0;
       }
       if(str == "0")
        str = "";
       
       str += "5";
       text.setText(str);
       if(sign != 0 )
        text2.append("5");
       else
           text2.setText(str);  
      }
      if ((JButton)e.getSource() == bt6){       
       if(sign == 5 ){
        str = "";
        sign = 0;
        zf = 0;
       }
       if(str == "0")
        str = "";
       
       str += "6";
       text.setText(str);
       if(sign != 0 )
        text2.append("6");
       else
           text2.setText(str);  
      }
      if ((JButton)e.getSource() == bt7){
       if(sign == 5 ){
        str = "";
        sign = 0;
        zf = 0;
       }
       if(str == "0")
        str = "";
       
       str += "7";
       text.setText(str);
       if(sign != 0 )
        text2.append("7");
       else
           text2.setText(str);  
      }
      if ((JButton)e.getSource() == bt8){       
       if(sign == 5 ){
        str = "";
        sign = 0;
        zf = 0;
       }
       if(str == "0")
        str = "";
       
       str += "8";
       text.setText(str);
       if(sign != 0 )
        text2.append("8");
       else
           text2.setText(str);  
      }
      if ((JButton)e.getSource() == bt9){
       if(sign == 5 ){
        str = "";
        sign = 0;
        zf = 0;
       }
       if(str == "0")
        str = "";
       
       str += "9";
       text.setText(str);
       if(sign != 0 )
        text2.append("9");
       else
           text2.setText(str);  
      }
      if ((JButton)e.getSource() == bt0){
       if(sign == 5 ){
        str = "";
        sign = 0;
        zf = 0;
       }
       if(str != "" && str !="0"){       
           str += "0";
           text.setText(str);
           //if(sign != 0)
            text2.append("0");
           //text2.setText(str);  
       }
       else{        
           str = "0";
           text.setText("0");
           if(sign != 0 )
            text2.append(str);
           else
               text2.setText("0");
       }
      }
      if ((JButton)e.getSource() == btPoint){
       if(sign == 5 ){
        str = "";
        sign = 0;
           text2.setText("");
           zf = 0;
       }
       if(str == ""){
        str = "0"+".";
         text2.append("0.");
       }
       else
       {   if(str.indexOf(".")==-1){
           str += ".";
           text2.append(".");
       }
       }
       text.setText(str);
       
      }
      if ((JButton)e.getSource() == btadd){       
       b1 = new BigDecimal(str);
       
       if(sign == 5)      
        text2.setText(str);
       
       str = "";
       text.setText("+");       
       text2.append("+");
       sign = 1;
       zf = 0;
      }
      if ((JButton)e.getSource() == btMinus){
       b1 = new BigDecimal(str);
       
       if(sign == 5)      
        text2.setText(str);
       
       str = "";
       text.setText("-");
       text2.append("-");
       sign = 2;
       zf = 0;
      }
      if ((JButton)e.getSource() == btmul){       
       b1 = new BigDecimal(str);
       
       if(sign == 5)      
        text2.setText(str);
       
       str = "";
       text.setText("*");
       text2.append("*");
       sign = 3;
       zf = 0;
      }
      if ((JButton)e.getSource() == btdiv){   //急需修改
       b1 = new BigDecimal(str);
       
       if(sign == 5)            
        text2.setText(str);
       
       str = "";
       text.setText("÷");
       text2.append("÷");
       sign = 4;
       zf = 0;
      }
      if ((JButton)e.getSource() == btC){       
       str = "";
       b1 = null;
       b2 = null;
       text.setText("0");
       text2.setText("0");
       zf = 0;
      }
      if ((JButton)e.getSource() == btCE){
       
       if(sign == 0){
        b1 = null;
        text2.setText("");
       }
       else{
        b2 = null;
        String str2 = text2.getText();
        str2 = str2.replace(str, "");
        text2.setText(str2);
       }
       str = "";
       text.setText("0");
       zf = 0;
      }
      if ((JButton)e.getSource() == btback){       
       int len = str.length();
       if(len == 1)
        str = "0";
       else
        str = str.substring(0,len-1);
       text.setText(str);
       text2.setText(str);
      }
      if ((JButton)e.getSource() == btzf){
       if(sign == 0){
        if(zf == 0){
         zf = 1;
            str = "-"+str;
            text.setText(str);
            text2.setText(str);
           }
           else {
            zf = 0;
            str = str.substring(1,str.length());
            text.setText(str);
            text2.setText(str);
           }
       }
       else if (sign == 5){
        sign = 0;
        b1 = b3;
        if(zf == 0){
         zf = 1;
            str = "-"+str;
            text.setText(str);
            text2.setText(str);
           }
           else {
            zf = 0;
            str = str.substring(1,str.length());
            text.setText(str);
            text2.setText(str);
           }
        BigDecimal ZERO = new BigDecimal("0");
        b1 = ZERO.subtract(b1);
       }
       else{    
        if(zf == 0 ){
         zf = 1;
            String str2 = text2.getText();
            if(str == ""){
             text2.append("(-"+""+")");
            }
            else{
             str2 = str2.replace(str,"(-"+str+")");
             text2.setText(str2);
            }
            str = "-"+str;
            text.setText(str);
           }
           else {       
            zf = 0;
            str = str.substring(1,str.length());
            text.setText(str);
            String str2 = text2.getText();
            str2 = str2.replace("(-"+str+")",str);
            text2.setText(str2);
           }
       }
             
      }
      if ((JButton)e.getSource() == btden){
       
       if(sign == 5 ){
        b1 = b3;
        sign = sign2;
        str = b2.toString();
       }
       
       b2 = new BigDecimal(str);       
           
       if(sign == 1){
        b3 = b1.add(b2);
        text.setText(b3.toString());        
        text2.setText(b1+"+"+b2+"=");
        
        String str2 = b2.toString();
        if(str2.indexOf("-") != -1)
         text2.setText(b1+"+"+"("+b2+")"+"=");
        
        sign2 = 1;
        
       }
       if(sign == 2){
        b3 = b1.subtract(b2);
        text.setText(b3.toString());
        text2.setText(b1+"-"+b2+"=");
        
        String str2 = b2.toString();
        if(str2.indexOf("-") != -1 && str2.indexOf("(") == -1)
         text2.setText(b1+"-"+"("+b2+")"+"=");
        
        sign2 = 2;
       }
       if(sign == 3){
        b3 = b1.multiply(b2);
        text.setText(b3.toString());
        text2.setText(b1+"*"+b2+"=");
        
        String str2 = b2.toString();
        if(str2.indexOf("-") != -1)
         text2.setText(b1+"*"+"("+b2+")"+"=");
        
        sign2 = 3;
       }
             try{
              if(sign == 4){
               b3 = b1.divide(b2,10,BigDecimal.ROUND_HALF_UP);
                     
            text.setText(b3.toString());       
            text2.setText(b1+"÷"+b2+"=");
         
            String str2 = b2.toString();
            if(str2.indexOf("-") != -1 && str2.indexOf("(") == -1)
             text2.setText(b1+"÷"+"("+b2+")"+"=");
            
            sign2 = 4;
           }
          }catch (ArithmeticException ex){
         JOptionPane.showMessageDialog(null, "未知错误");
          }
       if(sign == 0){
        b3 = b2;
        text.setText(b2.toString());
        text2.setText(b2+"=");
       }
       sign = 5;
       str = b3.toString();
   
      }
      
      
     }
    }
   
}
class Ex extends Exception{

 
 private static final long serialVersionUID = -6027631684848445340L;}

class RunCalculator{
 public static void main(String[] args){
  Calculator cal = new Calculator();
  cal.setVisible(true);

 }
}

 

  评论这张
 
阅读(21)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018