zoukankan      html  css  js  c++  java
  • JAVA计算器算法实现

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


    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;




    public class BorderJFrame extends JFrame {
    private JButton display;
    private JPanel jp;
    private boolean start;
    private String lastCommand;
    private double result;
    public BorderJFrame(){
    this.setLayout(new BorderLayout());
    this.result=0;
    this.start=true;
    this.lastCommand="=";
    this.display=new JButton("0");
    this.display.setEnabled(false);
    add(display, BorderLayout.NORTH);

    ActionListener insert=new InsertAction();
    ActionListener command=new CommandAction();
    int k=7;
    this.setSize(300, 200);
    jp=new JPanel();
    jp.setLayout(new GridLayout(4, 4));
    for(int i=1;i<=4;i++){
    for(int j=1;j<=4;j++){
    if(j==4){
    if(i==1){
    this.addButton("/",command);
    }else if(i==2){
    this.addButton("*",command);
    }else if(i==3){
    this.addButton("-",command);
    }
    }else if(i==4){
    this.addButton("0", insert);
    this.addButton(".",command);
    this.addButton("=",command);
    this.addButton("+",command);
    break;
    }else{
    this.addButton(String.valueOf(k), insert);
    k++;
    }
    }
    k=k-6;
    }
    this.add(jp,BorderLayout.CENTER);
    }

    private class CommandAction implements ActionListener{


    @Override
    public void actionPerformed(ActionEvent e) {
    String command=e.getActionCommand();
    if(start){
    if(command.equals("-")){
    display.setText(command);
    start=false;
    }else{
    lastCommand=command;
    }
    }else{
    calculate(Double.parseDouble(display.getText()));
    lastCommand=command;
    start=true;
    }
    }

    }

    private class InsertAction implements ActionListener{


    @Override
    public void actionPerformed(ActionEvent e) {
    String input=e.getActionCommand();
    if(start){
    display.setText("");
    start=false;
    }
    display.setText(display.getText()+input);
    }
    }

    private void addButton(String label,ActionListener listener){
    JButton button=new JButton(label);
    button.addActionListener(listener);
    this.jp.add(button);
    }

    public void calculate(double x){
    if(lastCommand.equals("+"))result+=x;
    else if(lastCommand.equals("-"))result-=x;
    else if(lastCommand.equals("*"))result*=x;
    else if(lastCommand.equals("/"))result/=x;
    else if(lastCommand.equals("="))result=x;
    this.display.setText(""+result);
    }
    }

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    测试PHP-FPM的工作流中的疑惑点
    摘要
    Centrifugo简单试用
    react-redux的基本用法
    PHP中使用ElasticSearch(二)
    PHP中使用ElasticSearch(一)
    Vue中的状态管理器
    Laravel数据库迁移
    快速搭建一个vue开发环境
    使用cURL尝试ElasticSearch
  • 原文地址:https://www.cnblogs.com/liyuanjinglyj/p/4656595.html
Copyright © 2011-2022 走看看