计算器的模拟实现

简介: 计算器的模拟实现

一、实验题目:计算器

二:实验目的:

通过本次实验使学生掌握java语言图形用户界面开发的相关技术。

三:实验内容与实现

1:【实验内容】

完成计算器的加、减、乘、除、开方、求反等功能,具体功能需求可以参考window自带计算器。如图:

2:【实验实现】

1.计算器界面的实现,如下图所示:



2:各项功能的实现,如下图所示:



3:具体的实现代码:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator extends JFrame implements ActionListener {
    //声明并初始化各组件
    private JTextField displayField;
    private JButton addButton, subtractButton, multiplyButton, divideButton,
            sqrtButton, negateButton, equalsButton;
    private double currentValue = 0.0;
    private String currentOperation = "=";
    public Calculator() {
        //设置窗口标题和关闭操作
        setTitle("Calculator");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //设置窗口的大小
       setSize(300, 300);
        //创建并设置显示框
        displayField = new JTextField("0");
        displayField.setEditable(false);
        displayField.setHorizontalAlignment(JTextField.RIGHT);
        add(displayField, BorderLayout.NORTH);
       //设置按钮面板
        JPanel buttonPanel = new JPanel();
        buttonPanel.setLayout(new GridLayout(5, 4));
       //初始化并添加加法按钮
        addButton = new JButton("+");
        addButton.addActionListener(this);
        buttonPanel.add(addButton);
        //初始化并添加减法按钮
        subtractButton = new JButton("-");
        subtractButton.addActionListener(this);
        buttonPanel.add(subtractButton);
        //初始化并添加乘法按钮
        multiplyButton = new JButton("*");
        multiplyButton.addActionListener(this);
        buttonPanel.add(multiplyButton);
        //初始化并添加除法按钮
        divideButton = new JButton("/");
        divideButton.addActionListener(this);
        buttonPanel.add(divideButton);
        //初始化并添加平方根按钮
        sqrtButton = new JButton("sqrt");
        sqrtButton.addActionListener(this);
        buttonPanel.add(sqrtButton);
        //初始化并添加正负号按钮
        negateButton = new JButton("+/-");
        negateButton.addActionListener(this);
        buttonPanel.add(negateButton);
        //初始化并添加等于号按钮
        equalsButton = new JButton("=");
        equalsButton.addActionListener(this);
        equalsButton.setForeground(Color.RED);
        buttonPanel.add(equalsButton);
        //初始化并添加数字按钮(0——9)
        for (int i = 1; i < 10; i++) {
            JButton digitButton = new JButton(String.valueOf(i));
            digitButton.addActionListener(this);
            buttonPanel.add(digitButton);
        }
       //将面板添加到窗口
        add(buttonPanel, BorderLayout.CENTER);
    }
    public void actionPerformed(ActionEvent e) {
        String buttonText = e.getActionCommand();
        if (buttonText.equals("C")) {//处理清空按钮,删除当前值
            currentValue = 0.0;
            currentOperation = "=";
            displayField.setText("0");
        } else if (buttonText.equals("+")) {//处理加法按钮,保存当前值和操作符,并将显示框文本重置为0
            currentValue = Double.parseDouble(displayField.getText());
            currentOperation = "+";
            displayField.setText("0");
        } else if (buttonText.equals("-")) {//处理减法按钮,保存当前值和操作符,并将显示框文本重置为0
            currentValue = Double.parseDouble(displayField.getText());
            currentOperation = "-";
            displayField.setText("0");
        } else if (buttonText.equals("*")) {//处理乘法按钮,保存当前值和操作符,并将显示框文本重置为0
            currentValue = Double.parseDouble(displayField.getText());
            currentOperation = "*";
            displayField.setText("0");        }
        else if (buttonText.equals("/")) {//处理除法按钮,保存当前值和操作符,并将显示框文本重置为0
            currentValue = Double.parseDouble(displayField.getText());
            currentOperation = "/";
            displayField.setText("0");
        } else if (buttonText.equals("sqrt")) {//处理平方根按钮,保存当前值和操作符,并将显示框文本重置为0
            currentValue = Double.parseDouble(displayField.getText());
            currentValue = Math.sqrt(currentValue);
            displayField.setText(String.valueOf(currentValue));
        } else if (buttonText.equals("+/-")) {//处理正负号事件,
            currentValue = Double.parseDouble(displayField.getText());
            currentValue = -currentValue;
            displayField.setText(String.valueOf(currentValue));
        } else if (buttonText.equals("=")) {//处理等号按钮,执行计算操作并更新显示框文本
            double newValue = Double.parseDouble(displayField.getText());
            if (currentOperation.equals("+")) {
                currentValue += newValue;
            } else if (currentOperation.equals("-")) {
                currentValue -= newValue;
            } else if (currentOperation.equals("*")) {
                currentValue *= newValue;
            } else if (currentOperation.equals("/")) {
                currentValue /= newValue;
            }
            //更新显示框文本
            displayField.setText(String.valueOf(currentValue));
            currentOperation = "=";
        } else {
            if (displayField.getText().equals("0")) {
                displayField.setText(buttonText);
            } else {//添加新的数字到显示框
                displayField.setText(displayField.getText() + buttonText);
            }
        }
    }
    public static void main(String[] args) {
        Calculator calculator = new Calculator();
        calculator.setVisible(true);
    }
}
目录
相关文章
|
4月前
|
安全 Serverless Python
用Python实现计算器功能
用Python实现计算器功能
63 1
|
4月前
计算器V2
编写了一个简单的程序,实现了浮点数的加、减、乘、除和幂运算。程序包括了对浮点数的计算,并展示了运算结果。其中,幂运算需包含&quot;math.h&quot;头文件。
34 0
|
4月前
计算器V1
创建一个简单的计算器程序,能执行整数的加、减、乘、除和求余运算。用户输入格式为:操作数1 运算符op 操作数2。遇到除数为0时,输出&quot;Division by zero!&quot;;运算符非法则输出&quot;Invalid operator!&quot;。示例输入和输出已给出。
48 0
|
4月前
|
前端开发 JavaScript
使用html+css+javaScript 完成计算器
使用html+css+javaScript 完成计算器
|
4月前
|
算法 测试技术 UED
Python实现计算器的设计与实现
Python实现计算器的设计与实现
207 0
|
Java
从计算器小例子的总结思考
从计算器小例子的总结思考
118 0
|
算法 前端开发 存储
前端算法-计算器
前端算法-计算器
|
算法
lougu 2485计算器(BSGS)
lougu 2485计算器(BSGS)
125 0
计算器(简易版)
另一种是利用转移表的方式来写,将各个函数的地址存放在一个函数指针数组里面,当要使用函数时,就直接调用指针即可,可以改观上面的美观(上面的代码有很多重复的,太挫了)
89 0
|
前端开发
一个很简易的计算器
一个很简易的计算器
97 0
一个很简易的计算器