课设-计算器

实验内容:

学习GUI图形界面的设计Java Swing/Awt,创建交互友好的应用程序;
能通过界面按钮控件输入并实现算术表达式,输入的表达式即时在控件中显示,按下“=”按钮能实现运算,并将运算结果输出在控件中显示;要求能保存和浏览历史表达式的运算记录。
算术表达式求解,是指算术表达式中包括加、减、乘、除、括号等运算符,能求解包含括号的四则混合运算;并且能够检验表达式的合法性。
实现效果:
在这里插入图片描述

实现思路

利用swing创建一个窗体,设计按键布局等,设置按键监听,将按键的输入信息转成String类型,
然后将输入的中缀表达式转化为后缀表达式并且计算结果。

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

public class getStart extends JFrame{
    private boolean point_jud=true;//小数点合法性判断,true为可以输入小数点
    private boolean sym_jud =false;//运算符号合法性判断
    // 括号合法性判断,右括号数目小于左括号数目-1才能输入
    private int sym_l=0;
    private int sym_r=0;

    public String str;
    private JButton lpt;
    private JButton rpt;
    private JPanel panel1;

    private JButton answer;
    private JButton button_add;
    private JButton button_sub;
    private JButton Button_mul;
    private JButton button_div;
    private JButton delete;
    private JButton Button1;
    private JButton Button2;
    private JButton Button3;
    private JButton Button4;
    private JButton Button5;
    private JButton Button6;
    private JButton Button7;
    private JButton Button8;
    private JButton Button9;
    private JButton Button0;

    public JTextArea output0;
    public JTextArea input0;
    private JTextArea textArea1;
    private JButton deleteALL;
    private JButton point;
    Calculator infix;

    public getStart() {
        textArea1.setLineWrap(true);
        infix=new Calculator();

        System.out.println(str);
        lpt.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                sym_l += 1;
                input0.setText(input0.getText()+"(");
            }
        });
        rpt.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if(sym_r<=sym_l-1){
                input0.setText(input0.getText()+")");
                sym_r+=1;
                }
            }
        });
        delete.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                char add='+',sub='-',div='/',mul='*';

                String str = input0.getText();
                StringBuilder str2 = new StringBuilder();
                for (int i = 0; i < (str.length() - 1); i++) {
                    str2.append(str.charAt(i));
                }
                if (str2.toString().equals("")) {
                    input0.setText("");
                } else {
                    input0.setText(str2.toString());
                }
                if(str.charAt(str.length()-1)==add||str.charAt(str.length()-1)==sub||str.charAt(str.length()-1)==div||str.charAt(str.length()-1)==mul)sym_jud=true;
                else sym_jud=false;
            }
        });
        Button0.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                input0.setText(input0.getText()+"0");
                sym_jud =true;
            }
        });
        Button1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                input0.setText(input0.getText()+"1");
                sym_jud =true;

            }
        });

        Button2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                input0.setText(input0.getText()+"2");
                sym_jud =true;
            }
        });
        Button3.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                input0.setText(input0.getText()+"3");
                sym_jud =true;
            }
        });
        Button4.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                input0.setText(input0.getText()+"4");
                sym_jud =true;
            }
        });
        Button5.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                input0.setText(input0.getText()+"5");
                sym_jud =true;
            }
        });
        Button6.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                input0.setText(input0.getText()+"6");
                sym_jud =true;
            }
        });
        Button7.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                input0.setText(input0.getText()+"7");
                sym_jud =true;
            }
        });
        Button8.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                input0.setText(input0.getText()+"8");
                sym_jud =true;
            }
        });
        Button9.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                input0.setText(input0.getText()+"9");
                sym_jud =true;
            }
        });

        button_add.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if(sym_jud)input0.setText(input0.getText()+"+");
                sym_jud =false;
                point_jud=true;
            }
        });
        button_sub.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if(sym_jud)
                input0.setText(input0.getText()+"-");
                sym_jud =false;
                point_jud=true;
            }
        });
        Button_mul.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
       if(sym_jud) input0.setText(input0.getText()+"*");
                sym_jud =false;
                point_jud=true;
            }
        });
        button_div.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
               if(sym_jud) input0.setText(input0.getText()+"/");
                sym_jud =false;
                point_jud=true;
            }
        });
        answer.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                point_jud=true;
                sym_jud =true;
                str=input0.getText();
                output0.setText(infix.test(str));
                textArea1.setText(textArea1.getText()+input0.getText()+"="+output0.getText()+'\n');
                input0.setText("");
            }
        });

        deleteALL.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                point_jud=true;
                sym_jud =true;
                input0.setText("");output0.setText("");textArea1.setText("");
            }
        });
        point.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if(point_jud){input0.setText(input0.getText()+".");
                    point_jud=false;
                }
            }
        });
    }


    public static void main(String[] args) {
        JFrame frame = new JFrame("计算器已经运行---BY ymg");
        frame.setContentPane(new getStart().panel1);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }


}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值