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的结果

  • 相关阅读:
    02
    循环语句的注意点
    unsigned/signed int/char类型表示的数值范围
    C程序设计语言(第二版)--- 习题选
    第一篇来自博客园的博客--哈哈希望大家点赞
    脆弱的GPS系统--摘抄《环球科学》
    【Python入门自学笔记专辑】——函数式编程
    c++标准库conio.h文件
    推荐几个配色和图标网站
    Ajax实现简单下拉选项
  • 原文地址:https://www.cnblogs.com/lls1314520/p/4420630.html
Copyright © 2011-2022 走看看