JAVA——计算器

要求:用Java实现一个计算器。

代码:

import java.awt.BorderLayout;  
import java.awt.Container;  
import java.awt.GridLayout;  
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;  
import java.awt.event.KeyAdapter;  
import java.awt.event.KeyEvent;  

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

public class Calculator extends JFrame {  

    public static void main(String[] args) {  
        Calculator frame = new Calculator();  
        frame.setTitle("Calculator");  
        frame.setSize(360, 500);  
        frame.setResizable(false);  
        frame.setDefaultCloseOperation(EXIT_ON_CLOSE);   
        frame.init();       
        frame.setVisible(true);  //显示界面
    }  
    private void init()   
    {  
        int i;
        textField = new JTextField();     //文本(显示操作数及结果)
        textField.setEditable(false);     //不可更改
        textField.setHorizontalAlignment (JTextField.RIGHT);  //格式右对齐
        JPanel panel = new JPanel();     //界面
        panel.setLayout(new GridLayout(4, 4,3,3));     //排列格式
        Container container = getContentPane();   
        container.add(textField, BorderLayout.NORTH);  
        container.add(panel, BorderLayout.CENTER);  
        char Operator[]={'7','8','9','+','4','5','6','-','1','2','3','*','0','.','=','/'};
        for(i=0;i<=15;i++)      //添加按钮
            panel.add(operateButton(Operator[i]));
    }  
    public JButton operateButton (char key)   
    {  
        JButton button = new JButton(String.valueOf(key)); 
        button.addActionListener(new ActionListener()    //注册监听器
        {  
            public void actionPerformed(ActionEvent event)  
            {  
                JButton btn = (JButton) event.getSource();  
                char key2 = btn.getText().charAt(0);  
                action(key2);  
            }  
        });  
        button.addKeyListener(new KeyAdapter()  
        {  
            public void keyReleased(KeyEvent event)  
            {  
                char key2 = event.getKeyChar();  
                action(key2);  
            }  
        });  
        return button;  
    }  

    private void action(char key2)  
    {  
       if(isEqual)           //在key2是运算符的情况下用来判断是否是‘=’或者其他的情况
        {  
            textField.setText("");     //如果是等号,那么在输出结果之前清空文本内容
            isEqual = false;  
        } 
        switch(key2)     //首先将输入的是运算数还是运算符的情况区别开
        {  
            case '+':                                        //输入为运算符
                v1 = Double.parseDouble(textField.getText());  
                textField.setText("");  
                operator = '+';  
                break;  
            case '-':  
                v1 = Double.parseDouble(textField.getText());  
                textField.setText("");  
                operator = '-';  
                break;  
            case '*':  
                v1 = Double.parseDouble(textField.getText());  
                textField.setText("");  
                operator = '*';  
                break;  
            case '/':  
                v1 = Double.parseDouble(textField.getText());  
                textField.setText("");  
                operator = '/';  
                break;  
            case '=':                          //输入等号之后开始运算
                isEqual = true;  
                v2 = Double.parseDouble(textField.getText());  //如何将操作符后的数字放入v2中
                switch(operator)  
                {  
                    case '+':  
                        value = v1 + v2;  
                        break;  
                    case '-':  
                        value = v1 - v2;  
                        break;  
                    case '*':  
                        value = v1 * v2;  
                        break;  
                    case '/':  
                        value = v1 / v2;  
                        break;  
                    default: ;  
                }  
                textField.setText(String.valueOf(value));  
                break;  
            case '1':                 //输入为运算数的情况
            case '2':  
            case '3':  
            case '4':  
            case '5':  
            case '6':  
            case '7':  
            case '8':  
            case '9':  
            case '0':  
            case '.':  
                String text = textField.getText() + key2;  
                textField.setText(text);  
                break;  
            default: ;  
        }  
    }  
    private JTextField textField;  
    private double v1, v2, value;  
    private char operator;  
    private boolean isEqual = false;  
} 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值