zoukankan      html  css  js  c++  java
  • 软件工程第二次作业

    代码运行如下:

    mport javax.swing.*; 
    import java.awt.*; 
    import java.awt.event.*; 
     
    public class heya1 extends JFrame implements ActionListener 

        private boolean dotExist, operated, equaled; // 帮助运算的布尔变量 
        private double storedNumber; // 目前的结果 
        private char lastOperator; // 表示上一运算符 
        private JTextField operation; // 结果栏 
        private JButton dot, plus, minus, multi, div, sqrt, equal, changePN, clear; // 运算符 
        private JButton[] numbers; // 数字 
        
        // 构造者 
        public heya1() 
        { 
            setTitle("Calculator"); 
            // 初始化变量 
            dotExist = false; // 表示当前的数是否有小数点 
            operated = false; // 表示任意运算符是否被按下 
            equaled = false; // 表示等号是否被按下 
            storedNumber = 0; 
            lastOperator = '?'; 
            // 初始化窗口变量 
            operation = new JTextField("0"); 
            operation.setEditable(false); 
            numbers = new JButton[10]; 
            for (int i = 0; i < 10; i++) 
            numbers[i] = new JButton("" + i); 
            dot = new JButton("."); 
            plus = new JButton("+"); 
            minus = new JButton("-"); 
            multi = new JButton("*"); 
            div = new JButton("/"); 
            sqrt = new JButton("√"); 
            equal = new JButton("="); 
            changePN = new JButton("±"); 
            clear = new JButton("AC"); 
            // 将窗口物体放入窗口 
            GridBagLayout layout = new GridBagLayout(); 
            getContentPane().setLayout(layout); 
            addComponent(layout, operation, 0, 0, 4, 1); 
            addComponent(layout, numbers[1], 1, 0, 1, 1); 
            addComponent(layout, numbers[2], 1, 1, 1, 1); 
            addComponent(layout, numbers[3], 1, 2, 1, 1); 
            addComponent(layout, numbers[4], 2, 0, 1, 1); 
            addComponent(layout, numbers[5], 2, 1, 1, 1); 
            addComponent(layout, numbers[6], 2, 2, 1, 1); 
            addComponent(layout, numbers[7], 3, 0, 1, 1); 
            addComponent(layout, numbers[8], 3, 1, 1, 1); 
            addComponent(layout, numbers[9], 3, 2, 1, 1); 
            addComponent(layout, dot, 4, 0, 1, 1); 
            addComponent(layout, numbers[0], 4, 1, 1, 1); 
            addComponent(layout, sqrt, 4, 2, 1, 1); 
            addComponent(layout, plus, 1, 3, 1, 1); 
            addComponent(layout, minus, 2, 3, 1, 1); 
            addComponent(layout, multi, 3, 3, 1, 1); 
            addComponent(layout, div, 4, 3, 1, 1); 
            addComponent(layout, equal, 5, 0, 2, 1); 
            addComponent(layout, changePN, 5, 2, 1, 1); 
            addComponent(layout, clear, 5, 3, 1, 1); 
        } 
     
        // 对按钮进行反应的方法 
        public void actionPerformed(ActionEvent e) 
        { 
            JButton btn = (JButton)e.getSource(); 
            if (btn == clear) 
            { 
                operation.setText("0"); 
                dotExist = false; 
                storedNumber = 0; 
                lastOperator = '?'; 
            } 
            else if (btn == equal) 
            { 
                operate('='); 
                equaled = true; 
            } 
            else if (btn == plus) 
            { 
                operate('+'); 
                equaled = false; 
            } 
            else if (btn == minus) 
            { 
                operate('-'); 
                equaled = false; 
            } 
            else if (btn == multi) 
            { 
                operate('*'); 
                equaled = false; 
            } 
            else if (btn == div) 
            { 
                operate('/'); 
                equaled = false; 
            } 
            else if (btn == changePN) 
            { 
                operate('p'); 
                operate('='); 
                equaled = true; 
            } 
            else if (btn == sqrt) 
            { 
                operate('s'); 
                operate('='); 
                equaled = true; 
            } 
            else 
            { 
                if (equaled) 
                storedNumber = 0; 
                for (int i = 0; i < 10; i++) 
                if (btn == numbers[i]) 
                { 
                    if (operation.getText().equals("0")) 
                        operation.setText("" + i); 
                    else if(! operated) 
                        operation.setText(operation.getText() + i); 
                    else 
                    { 
                        operation.setText("" + i); 
                        operated = false; 
                    } 
                } 
                if (btn == dot && ! dotExist) 
                { 
                    operation.setText(operation.getText() + "."); 
                    dotExist = true; 
                } 
            } 
        } 
        // 进行运算的方法 
        private void operate(char operator) 
        { 
            double currentNumber = Double.valueOf(operation.getText()).doubleValue(); 
            if (lastOperator == '?') 
            storedNumber = currentNumber; 
            else if (lastOperator == '+') 
            storedNumber += currentNumber; 
            else if (lastOperator == '-') 
            storedNumber -= currentNumber; 
            else if (lastOperator == '*') 
            storedNumber *= currentNumber; 
            else if (lastOperator == '/') 
            storedNumber /= currentNumber; 
            else if (lastOperator == 'p') 
            storedNumber *= -1; 
            else if (lastOperator == 's') 
            storedNumber = Math.sqrt(currentNumber); 
            else if (lastOperator == '=' && equaled) 
            storedNumber = currentNumber; 
            operation.setText("" + storedNumber); 
            operated = true; 
            lastOperator = operator; 
        } 
        
        // 快捷使用GridBagLayout的方法 
        private void addComponent(GridBagLayout layout, Component component, int row, int col, int width, int height) 
        { 
            GridBagConstraints constraints = new GridBagConstraints(); 
            constraints.fill = GridBagConstraints.BOTH; 
            constraints.insets = new Insets(10, 2, 10, 2); 
            constraints.weightx = 100; 
            constraints.weighty = 100; 
            constraints.gridx = col; 
            constraints.gridy = row; 
            constraints.gridwidth = width; 
            constraints.gridheight = height; 
            layout.setConstraints(component, constraints); 
            if (component instanceof JButton) 
            ((JButton)component).addActionListener(this); 
            getContentPane().add(component); 
        } 
        
        // 主方法初始化并显示窗口 
        public static void main(String[] args) 
        { 
            heya1 calc = new heya1(); 
            calc.setSize(290, 400); 
            calc.setVisible(true); 
        } 
    }

    加法运行如下:

    1:4+5的代码如下

    减法运行如下

    2:5-4的运行结果

    :

    3:乘法运行

    4*5的运行结果

    4:除法的运行

    5/4的结果

  • 相关阅读:
    pymysql 查询大量数据导致内存使用过高优化方案
    docker-compose文件
    Flask关于request一些方法和属性的整理
    gitignore 文件中忽略项不起作用的解决方法
    Django 时区
    django-apscheduler定时任务
    结队-贪吃蛇游戏-项目进度
    团队-科学计算器-开发环境搭建过程
    《团队-科学计算器-设计文档》
    《结对-贪吃蛇-设计文档》
  • 原文地址:https://www.cnblogs.com/lls1314520/p/4420630.html
Copyright © 2011-2022 走看看