用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

计算器

2017-06-19 作者: 夜雨声烦举报

[java]代码库

111111111111111111111111111111111111111111111111111111111111111111111
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.rmi.server.Operation;
import java.text.NumberFormat;
import java.util.LinkedList;
 
import javax.naming.LinkLoopException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;
import javax.swing.border.SoftBevelBorder;
 
public class ComputerPad extends Frame implements ActionListener{
    NumberButton numberButton[];                     //数字按钮数组
    OperationButton operationButton[];               //运算符号按钮数组
    JTextField resultShow;
    //小数点按钮,正负号按钮,退格按钮,求倒数按钮,等号按钮,清零按钮
    JButton btn_point,btn_symbol,btn_quit,btn_lastCount,btn_equal,btn_clear;  //按钮
    LinkedList linkedList =new LinkedList();//负责存储数据的对象
    String operation[]={"+","-","*","/"};//运算发号数组
    boolean flag=false;                  //是否按下等号
public void f(){
    JFrame frame=new JFrame("计算器");
    frame.setBounds(200,100,320,250);
    JPanel panel=new JPanel();
    JPanel panel1=new JPanel();
    numberButton=new NumberButton[10];//共有十个数字按钮
    for (int i = 0; i < 10 ;i++) {
        numberButton[i]=new NumberButton(i);
        numberButton[i].addActionListener(this);
    }
    operationButton =new OperationButton[4];
    for (int i = 0; i <4; i++) {
        operationButton[i]=new OperationButton(operation[i]);
        operationButton[i].addActionListener( this);
    }
    btn_point=new JButton(".");//小数点
    btn_symbol=new JButton("+/-");//正负号
    btn_equal=new JButton("=");//等号
    btn_quit=new JButton("退格");//退格
    btn_lastCount=new JButton("1/x");//倒数
    btn_clear=new JButton("c");//清空
 
    btn_clear.setForeground(Color.red);
    btn_quit.setForeground(Color.red);
    btn_equal.setForeground(Color.red);
    btn_lastCount.setForeground(Color.blue);
    btn_symbol.setForeground(Color.blue);
    btn_point.setForeground(Color.blue);   
     
    btn_clear.addActionListener(this);
    btn_equal.addActionListener(this);
    btn_lastCount.addActionListener(this);
    btn_point.addActionListener(this);
    btn_quit.addActionListener(this);
    btn_symbol.addActionListener(this);
     
    resultShow=new JTextField(20);
    resultShow.setHorizontalAlignment(JTextField.RIGHT);
    resultShow.setForeground(Color.blue);
    resultShow.setFont(new Font("TimesRoman",Font.PLAIN,14));
    resultShow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));
    resultShow.setBackground(Color.white);
    resultShow.setEditable(false);
     
    panel1.add(resultShow);
    panel.setLayout(new GridLayout(4,5));//面板中的第一行
    panel.add(numberButton[1]);
    panel.add(numberButton[2]);
    panel.add(numberButton[3]);
    panel.add(operationButton[0]);
    panel.add(btn_clear);
    //面板第二行
    panel.add(numberButton[4]);
    panel.add(numberButton[5]);
    panel.add(numberButton[6]);
    panel.add(operationButton[1]);
    panel.add(btn_quit);
    //面板中的第三行
    panel.add(numberButton[7]);
    panel.add(numberButton[8]);
    panel.add(numberButton[9]);
    panel.add(operationButton[2]);
    panel.add(btn_lastCount);
    //面板中的第四行
    panel.add(numberButton[0]);
    panel.add(btn_symbol);
    panel.add(btn_point);
    panel.add(operationButton[3]);
    panel.add(btn_equal);
     
    frame.add(panel1, BorderLayout.NORTH);
    frame.add(panel,BorderLayout.CENTER);
     
    addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    });
    frame.setVisible(true);
    setResizable(false);
    validate();
}
@Override
public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    if(e.getSource() instanceof NumberButton)//如果数遍单击数字按钮
    {
        NumberButton b=(NumberButton) e.getSource();
        if (linkedList.size()==0) {//如果链表中没有节点
             int number=b.getNumber();//获取按钮上的数字
             linkedList.add(""+number);//将数据添加到链表
             resultShow.setText(""+number);//将两个数字收尾相接
             flag=false;
        }
        else if(linkedList.size()==1&&flag==false){
            int number=b.getNumber();
            String num=(String) linkedList.getFirst();
            String s=num.concat(""+number);
            linkedList.set(0, s);
            resultShow.setText(s);
        }
        else if(linkedList.size()==1&&flag==true){
            int number=b.getNumber();
            linkedList.removeFirst();
            linkedList.add(""+number);      //将数据添加到链表
            flag=false;
            resultShow.setText(""+number);
        }
        else if(linkedList.size()==2){//链表中已有2个节点
            int number=b.getNumber();//获取按钮上数字
            linkedList.add(""+number);//链表添加第三个节点,注意:第二个节点是运算符号。
            resultShow.setText(""+number);
        }
        else if(linkedList.size()==3){//链表中已有3个节点
            int number=b.getNumber();
            String num=(String) linkedList.getLast();
            String s=num.concat(""+number);//与链表第3个节点中的数字收尾相接
            linkedList.set(2, s);
            resultShow.setText(s);
        }
    }
     
        else if(e.getSource() instanceof OperationButton){//如果单击运算符号按钮
            OperationButton b=(OperationButton) e.getSource();
            if(linkedList.size()==1){
                String fuhao=b.getOperator();
                linkedList.add(fuhao);
            }
            else if(linkedList.size()==2){
                String fuhao=b.getOperator();
                linkedList.set(1, fuhao);
            }
            else if(linkedList.size()==3){
                String fuhao=b.getOperator();
                String number1=(String) linkedList.getFirst();
                String number2=(String) linkedList.getLast();
                String yunsuanfuhao=(String) linkedList.get(1);
                try {
                double n1=Double.parseDouble(number1);
                double n2=Double.parseDouble(number2);
                double n=0;
                if(yunsuanfuhao.equals("+")){
                    n=n1+n2;
                }
                else if(yunsuanfuhao.equals("-")){
                    n=n1-n2;
                }
                else if(yunsuanfuhao.equals("*")){
                    n=n1*n2;
                }
                else if(yunsuanfuhao.equals("/")){
                    n=n1/n2;
                }
                linkedList.clear();//根据链表内已有的数进行运算,其结果作为新的运算数值
                linkedList.add(""+n);
                linkedList.add(fuhao);
                resultShow.setText(""+n);
                } catch (Exception e2) {
                    // TODO: handle exception
                }
            }
        }
//(1)  
        else if(e.getSource()==btn_equal){
            flag=true;
            if(linkedList.size()==1||linkedList.size()==2){
                String num=(String) linkedList.getFirst();
                resultShow.setText(""+num);
            }
            else if(linkedList.size()==3){
                String number1=(String) linkedList.getFirst();
                String number2=(String) linkedList.getLast();
                String yunsuanfuhao=(String) linkedList.get(1);
                try {
                    double n1=Double.parseDouble(number1);
                    double n2=Double.parseDouble(number2);
                    double n=0;
                    if(yunsuanfuhao.equals("+")){
                        n=n1+n2;
                    }
                    else if(yunsuanfuhao.equals("-")){
                        n=n1-n2;
                    }
                    else if(yunsuanfuhao.equals("*")){
                        n=n1*n2;
                    }
                    else if(yunsuanfuhao.equals("/")){
                        n=n1/n2;
                    }
                    resultShow.setText(""+n);
                    linkedList.set(0,""+n);
                    linkedList.removeLast();//将链表中的第二个运算数删除
                    linkedList.removeLast();//再将运算符号删除
                } catch (Exception e2) {
                    // TODO: handle exception
                }
            }
        }
//(2)
        else if(e.getSource()==btn_point){
            if(linkedList.size()==0){
                flag=false;
            }
            else if(linkedList.size()==1) {
                String dot=btn_point.getLabel();//获取按钮上的小数点
                String num=(String) linkedList.getFirst();
                String s=null;
                if(num.indexOf(dot)==-1){//嫁娶数字中不含小数点
                    s=num.concat(dot);
                    linkedList.set(0, s);
                }
                else{
                    s=num;
                }
                linkedList.set(0, s);
                resultShow.setText(s);
            }
            else if(linkedList.size()==3){
                String dot=btn_point.getLabel();//获取按钮上的小数点
                String num=(String) linkedList.getLast();
                String s=null;
                if(num.indexOf(dot)==-1){
                    s=num.concat(dot);
                    linkedList.set(2, s);
                }
                else{
                    s=num;
                }
                resultShow.setText(s);
            }
        }
//(3)  
        else if(e.getSource()==btn_quit){
            if(linkedList.size()==1){
                String num=(String) linkedList.getFirst();
                if(num.length()>=1){
                    num=num.substring(0,num.length()-1);
                    linkedList.set(0, num);
                    resultShow.setText(num);
                }else{
                    linkedList.removeLast();
                    resultShow.setText("0");
                }
            }
            else if(linkedList.size()==3){
                String num=(String) linkedList.getLast();
                if(num.length()>=1){
                    num=num.substring(0, num.length()-1);
                    linkedList.set(2, num);
                }
                else{
                    linkedList.removeLast();
                    resultShow.setText("0");
                }
            }
        }
//(4)  
        else if(e.getSource()==btn_symbol){
            if(linkedList.size()==1){
                String number1=(String) linkedList.getFirst();
                try {
                    double d=Double.parseDouble(number1);
                    d=-1*d;
                    String str=String.valueOf(d);
                    linkedList.set(0, str);
                    resultShow.setText(str);
                } catch (Exception e2) {
                    // TODO: handle exception
                }
            }
            else if(linkedList.size()==3){
                String number2=(String) linkedList.getLast();
                try {
                    double d=(Double) linkedList.getLast();
                    d=-1*d;
                    String str=String.valueOf(d);
                    linkedList.set(2, str);
                    resultShow.setText(str);
                } catch (Exception e2) {
                    // TODO: handle exception
                }
            }
        }
//(5)
        else if(e.getSource()==btn_lastCount){
            if(linkedList.size()==1||linkedList.size()==2){
                String number1=(String) linkedList.getFirst();
                try {
                    double d=Double.parseDouble(number1);
                    d=1.0/d;
                    String str=String.valueOf(d);
                    linkedList.set(0, str);
                    resultShow.setText(str);
                } catch (Exception e2) {
                    // TODO: handle exception
                }
            }
            else if(linkedList.size()==3){
                String number2=(String) linkedList.getLast();
                try {
                    double d=Double.parseDouble(number2);
                    d=1.0/d;
                    String str=String.valueOf(d);
                    linkedList.set(0, str);
                } catch (Exception e2) {
                    // TODO: handle exception
                }
            }
        }
//(6)  
        else if(e.getSource()==btn_clear){
            flag=false;
            resultShow.setText("0");
            linkedList.clear();
        }
}
public static void main(String[] args) {
    ComputerPad c=new ComputerPad();
    c.f();
 
     
}
    }
2222222222222222222222222222222222222222222222222222222
import java.awt.Button;
import java.awt.Color;
import java.awt.GraphicsEnvironment;
import java.awt.HeadlessException;
public class NumberButton extends Button{
    int number;
    public NumberButton(int number) {
        super(" "+number);// public Button(String label) throws HeadlessException { GraphicsEnvironment.checkHeadless();this.label = label; }  构造一个带指定标签的按钮。
        this.number=number;
        setForeground(Color.blue);
    }
    public int getNumber() {
        return number;
    }
}
3333333333333333333333333333333333333333333333333333333333333
import java.awt.Button;
import java.awt.Color;
 
public class OperationButton extends Button{
        String operator;
        public OperationButton(String s){
            super(s);
            operator=s;
            setForeground(Color.red);
        }
    public String getOperator(){
        return operator;
    }
}


网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...