iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >java实现计算器模板及源码
  • 864
分享到

java实现计算器模板及源码

2024-04-02 19:04:59 864人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

计算器实现了大部分基础功能:基本运算,菜单栏选项,并且拓展了普通型和科学兴选项等等,读者可以在此基础上进行修改和拓展。其他具体实现方法可以看源码,里面有详细的概述,代码框架清晰。 运

计算器实现了大部分基础功能:基本运算,菜单栏选项,并且拓展了普通型和科学兴选项等等,读者可以在此基础上进行修改和拓展。其他具体实现方法可以看源码,里面有详细的概述,代码框架清晰。

运行环境:win10 Eclipse IDE for Java Developers - 2020-06

下面是计算器的视图:

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

import javax.swing.*;


public class CaculatorTest implements ActionListener {
    // 初始框架搭建
    JFrame frame = new JFrame("计算器");
    JTextField area = new JTextField("0");
    JPanel panel1 = new JPanel();
    JPanel panel2 = new JPanel();
    JButton[] buttons = new JButton[20];
    String[] buttonsText = { "sqrt", "退格", "C", "/", "7", "8", "9", "*", "4", "5", "6", "-", "1", "2", "3", "+", "0",
            ".", "+/-", "=" };
    boolean point = false; // 用于判断是否输入多位小数点
    boolean key = true; // 做完运算("=")后继续输入数字
    String sign = " "; // 用于判断和记录运算符号
    double temp = 0; // 多次连续运算时,值的寄存处

    public CaculatorTest() {
        initMenu();
        initText();
        initExtend();
        initFrame();
        initBorderLayout();
    }

    // 初始化菜单
    private void initMenu() {
        JMenuBar mb = new JMenuBar();
        JMenu m1 = new JMenu("选项");
        JMenu m2 = new JMenu("编辑");
        JMenu m3 = new JMenu("帮助");
        JMenuItem m11 = new JMenuItem("普通型计算器");
        JMenuItem m12 = new JMenuItem("科学型计算器");
        m1.add(m11);
        m1.add(m12);
        m11.addActionListener(new ActionListener() {
            @Override
            public void actionPerfORMed(ActionEvent e) {
                boolean flag = false;
                panel2.setVisible(flag);
                frame.pack();
            }
        });
        m12.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                boolean flag = true;
                panel2.setVisible(flag);
                frame.pack();
            }
        });
        mb.add(m1);
        mb.add(m2);
        mb.add(m3);
        frame.setJMenuBar(mb);
    }

    // 初始化输出文本域
    private void initText() {
        area.setFont(new Font("TimesRoman", Font.PLaiN, 20));
        area.setSize(400, 100);
        area.setHorizontalAlignment(JTextField.RIGHT); // 向右显示
    }

    // 初始化拓展功能
    private void initExtend() {
        panel2.setLayout(new GridLayout(1,4,1,1));
        JButton b1 = new JButton("sin");
        JButton b2 = new JButton("cos");
        JButton b3 = new JButton("exp");
        JButton b4 = new JButton("ln");
        b1.setFont(new Font("TimesRoman", Font.PLAIN, 20));
        b2.setFont(new Font("TimesRoman", Font.PLAIN, 20));
        b3.setFont(new Font("TimesRoman", Font.PLAIN, 20));
        b4.setFont(new Font("TimesRoman", Font.PLAIN, 20));
        b1.setSize(100, 100);
        b1.addActionListener(this);
        b2.setSize(100, 100);
        b2.addActionListener(this);
        b3.setSize(100, 100);
        b3.addActionListener(this);
        b4.setSize(100, 100);
        b4.addActionListener(this);
        panel2.add(b1);
        panel2.add(b2);
        panel2.add(b3);
        panel2.add(b4);
    }

    // 初始化计算器基本界面
    private void initFrame() {
        panel1.setLayout(new GridLayout(5, 4, 1, 1));
        for (int i = 0; i < buttonsText.length; i++) {
            JButton button = new JButton(buttonsText[i]);
            button.setSize(100, 100);
            button.setFont(new Font("TimesRoman", Font.PLAIN, 20));
            button.addActionListener(this);
            panel1.add(button);
        }
    }

    // 初始化计算器总基本界面
    private void initBorderLayout() {
        frame.setLayout(new BorderLayout());
        frame.add(panel1, BorderLayout.SOUTH); // 插入组件
        frame.add(area, BorderLayout.NORTH);
        frame.add(panel2, BorderLayout.CENTER);
        frame.setLocation(700, 400);
        frame.setSize(400, 700);
        frame.setVisible(true); // 设置可见
        panel2.setVisible(false);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 可以关闭
        frame.pack();
    }

    public static void main(String[] args) {
        new CaculatorTest();
    }

    @Override
    // 事件监听
    public void actionPerformed(ActionEvent e) {
        String str = e.getActionCommand();
        String str2 = area.getText();
        if (str == "0" || str == "1" || str == "2" || str == "3" || str == "4" || str == "5" || str == "6" || str == "7"
                || str == "8" || str == "9") {
            if (key == false) {
                area.setText(str2 + str);
            } else {
                area.setText(str);
                key = false;
            }
        } else if (str == "C") {
            area.setText("0");
            sign = " ";
            key = true;
        } else if (str == ".") {
            if (point == false) {
                area.setText(str2 + str);
                point = true;
            } else {
                area.setText("double poits!press C to update!");
                point = false;
            }
        } else if (str == "+/-") {
            double num = Double.valueOf(str2);
            num = -num;
            area.setText(String.valueOf(num));
        } else if (str == "退格") {
            if (str2.length() == 0) {
                area.setText("can't be deleted!please press C!");
            } else {
                str2 = str2.substring(0, str2.length() - 1);
                area.setText(str2);
            }
        } else if (str == "sqrt") {
            area.setText("");
            sign = "s";
        } else if (str == "sin") {
            area.setText("");
            sign = "sin";
        } else if (str == "cos") {
            area.setText("");
            sign = "cos";
        } else if (str == "exp") {
            area.setText("");
            sign = "exp";
        } else if (str == "ln") {
            area.setText("");
            sign = "ln";
        } else {
            if (str == "+") {
                if (sign == " ") {
                    sign = "+";
                    temp = Double.valueOf(str2);
                    area.setText("");
                } else if (sign == "-") {
                    if (str2.length() == 0) {
                        sign = "+";
                    } else {
                        temp = temp - Double.valueOf(str2);
                        sign = "+";
                        area.setText("");
                        key = true;
                    }
                } else if (sign == "+") {
                    if (str2.length() == 0) {
                        sign = "+";
                    } else {
                        temp = temp + Double.valueOf(str2);
                        sign = "+";
                        area.setText("");
                        key = true;
                    }
                } else if (sign == "*") {
                    if (str2.length() == 0) {
                        sign = "+";
                    } else {
                        temp = temp * Double.valueOf(str2);
                        sign = "+";
                        area.setText("");
                        key = true;
                    }
                } else if (sign == "/") {
                    if (str2.length() == 0) {
                        sign = "+";
                    } else if (Double.valueOf(str2) == 0) {
                        area.setText("除数不能为0哦!按 C");
                    } else {
                        temp = temp / Double.valueOf(str2);
                        area.setText("");
                        sign = "+";
                        key = true;
                    }
                } else if (sign == "s") {
                    if (str2.length() == 0) {
                        sign = "+";
                    } else {
                        temp = Math.sqrt(Double.valueOf(str2));
                        area.setText("");
                        sign = "+";
                    }
                } else if (sign == "sin") {
                    if (str2.length() == 0) {
                        sign = "+";
                    } else {
                        temp = Math.sin(Double.valueOf(str2));
                        area.setText("");
                        sign = "+";
                    }
                } else if (sign == "cos") {
                    if (str2.length() == 0) {
                        sign = "+";
                    } else {
                        temp = Math.cos(Double.valueOf(str2));
                        area.setText("");
                        sign = "+";
                    }
                } else if (sign == "exp") {
                    if (str2.length() == 0) {
                        sign = "+";
                    } else {
                        temp = Math.exp(Double.valueOf(str2));
                        area.setText("");
                        sign = "+";
                    }
                } else if (sign == "ln") {
                    if (str2.length() == 0) {
                        sign = "+";
                    } else {
                        temp = Math.log(Double.valueOf(str2));
                        area.setText("");
                        sign = "+";
                    }
                }
            } else if (str == "-") {
                if (sign == " ") {
                    sign = "-";
                    temp = Double.valueOf(str2);
                    area.setText("");
                } else if (sign == "-") {
                    if (str2.length() == 0) {
                        sign = "-";
                    } else {
                        temp = temp - Double.valueOf(str2);
                        sign = "-";
                        area.setText("");
                        key = true;
                    }
                } else if (sign == "+") {
                    if (str2.length() == 0) {
                        sign = "-";
                    } else {
                        temp = temp + Double.valueOf(str2);
                        sign = "-";
                        area.setText("");
                        key = true;
                    }
                } else if (sign == "*") {
                    if (str2.length() == 0) {
                        sign = "-";
                    } else {
                        temp = temp * Double.valueOf(str2);
                        sign = "-";
                        area.setText("");
                        key = true;
                    }
                } else if (sign == "/") {
                    if (str2.length() == 0) {
                        sign = "-";
                    } else if (Double.valueOf(str2) == 0) {
                        area.setText("除数不能为0哦!按 C");
                    } else {
                        temp = temp / Double.valueOf(str2);
                        area.setText("");
                        sign = "-";
                        key = true;
                    }
                } else if (sign == "s") {
                    if (str2.length() == 0) {
                        sign = "-";
                    } else {
                        temp = Math.sqrt(Double.valueOf(str2));
                        area.setText("");
                        sign = "-";
                    }
                } else if (sign == "sin") {
                    if (str2.length() == 0) {
                        sign = "-";
                    } else {
                        temp = Math.sin(Double.valueOf(str2));
                        area.setText("");
                        sign = "-";
                    }
                } else if (sign == "cos") {
                    if (str2.length() == 0) {
                        sign = "-";
                    } else {
                        temp = Math.cos(Double.valueOf(str2));
                        area.setText("");
                        sign = "-";
                    }
                } else if (sign == "exp") {
                    if (str2.length() == 0) {
                        sign = "-";
                    } else {
                        temp = Math.exp(Double.valueOf(str2));
                        area.setText("");
                        sign = "-";
                    }
                } else if (sign == "ln") {
                    if (str2.length() == 0) {
                        sign = "-";
                    } else {
                        temp = Math.log(Double.valueOf(str2));
                        area.setText("");
                        sign = "-";
                    }
                }
            } else if (str == "*") {
                if (sign == " ") {
                    sign = "*";
                    temp = Double.valueOf(str2);
                    area.setText("");
                } else if (sign == "-") {
                    if (str2.length() == 0) {
                        sign = "*";
                    } else {
                        temp = temp - Double.valueOf(str2);
                        sign = "*";
                        area.setText("");
                        key = true;
                    }
                } else if (sign == "+") {
                    if (str2.length() == 0) {
                        sign = "*";
                    } else {
                        temp = temp + Double.valueOf(str2);
                        sign = "*";
                        area.setText("");
                        key = true;
                    }
                } else if (sign == "*") {
                    if (str2.length() == 0) {
                        sign = "*";
                    } else {
                        temp = temp * Double.valueOf(str2);
                        sign = "*";
                        area.setText("");
                        key = true;
                    }
                } else if (sign == "/") {
                    if (str2.length() == 0) {
                        sign = "*";
                    } else if (Double.valueOf(str2) == 0) {
                        area.setText("除数不能为0哦!按 C");
                    } else {
                        temp = temp / Double.valueOf(str2);
                        area.setText("");
                        sign = "*";
                        key = true;
                    }
                } else if (sign == "s") {
                    if (str2.length() == 0) {
                        sign = "*";
                    } else {
                        temp = Math.sqrt(Double.valueOf(str2));
                        area.setText("");
                        sign = "*";
                    }
                } else if (sign == "sin") {
                    if (str2.length() == 0) {
                        sign = "*";
                    } else {
                        temp = Math.sin(Double.valueOf(str2));
                        area.setText("");
                        sign = "*";
                    }
                } else if (sign == "cos") {
                    if (str2.length() == 0) {
                        sign = "*";
                    } else {
                        temp = Math.cos(Double.valueOf(str2));
                        area.setText("");
                        sign = "*";
                    }
                } else if (sign == "exp") {
                    if (str2.length() == 0) {
                        sign = "*";
                    } else {
                        temp = Math.exp(Double.valueOf(str2));
                        area.setText("");
                        sign = "*";
                    }
                } else if (sign == "ln") {
                    if (str2.length() == 0) {
                        sign = "*";
                    } else {
                        temp = Math.log(Double.valueOf(str2));
                        area.setText("");
                        sign = "*";
                    }
                }
            } else if (str == "/") {
                if (sign == " ") {
                    sign = "/";
                    temp = Double.valueOf(str2);
                    area.setText("");
                } else if (sign == "-") {
                    if (str2.length() == 0) {
                        sign = "/";
                    } else {
                        temp = temp - Double.valueOf(str2);
                        sign = "/";
                        area.setText("");
                        key = true;
                    }
                } else if (sign == "+") {
                    if (str2.length() == 0) {
                        sign = "/";
                    } else {
                        temp = temp + Double.valueOf(str2);
                        sign = "/";
                        area.setText("");
                        key = true;
                    }
                } else if (sign == "*") {
                    if (str2.length() == 0) {
                        sign = "/";
                    } else {
                        temp = temp * Double.valueOf(str2);
                        sign = "/";
                        area.setText("");
                        key = true;
                    }
                } else if (sign == "/") {
                    if (str2.length() == 0) {
                        sign = "/";
                    } else if (Double.valueOf(str2) == 0) {
                        area.setText("除数不能为0哦!按 C");
                    } else {
                        temp = temp / Double.valueOf(str2);
                        area.setText("");
                        sign = "/";
                        key = true;
                    }
                } else if (sign == "s") {
                    if (str2.length() == 0) {
                        sign = "/";
                    } else {
                        temp = Math.sqrt(Double.valueOf(str2));
                        area.setText("");
                        sign = "/";
                    }
                } else if (sign == "sin") {
                    if (str2.length() == 0) {
                        sign = "/";
                    } else {
                        temp = Math.sin(Double.valueOf(str2));
                        area.setText("");
                        sign = "/";
                    }
                } else if (sign == "cos") {
                    if (str2.length() == 0) {
                        sign = "/";
                    } else {
                        temp = Math.cos(Double.valueOf(str2));
                        area.setText("");
                        sign = "/";
                    }
                } else if (sign == "exp") {
                    if (str2.length() == 0) {
                        sign = "/";
                    } else {
                        temp = Math.exp(Double.valueOf(str2));
                        area.setText("");
                        sign = "/";
                    }
                } else if (sign == "ln") {
                    if (str2.length() == 0) {
                        sign = "/";
                    } else {
                        temp = Math.log(Double.valueOf(str2));
                        area.setText("");
                        sign = "/";
                    }
                }
            } else if (str == "=") {
                if (sign == "+") {
                    if (str2.length() == 0) {
                        area.setText(String.valueOf(temp));
                        sign = " ";
                    } else {
                        temp = temp + Double.valueOf(str2);
                        area.setText(String.valueOf(temp));
                        sign = " ";
                    }
                } else if (sign == "-") {
                    if (str2.length() == 0) {
                        area.setText(String.valueOf(temp));
                        sign = " ";
                    } else {
                        temp = temp - Double.valueOf(str2);
                        area.setText(String.valueOf(temp));
                        sign = " ";
                    }
                } else if (sign == "*") {
                    if (str2.length() == 0) {
                        area.setText(String.valueOf(temp));
                        sign = " ";
                    } else {
                        temp = temp * Double.valueOf(str2);
                        area.setText(String.valueOf(temp));
                        sign = " ";
                    }
                } else if (sign == "/") {
                    if (Double.valueOf(str2) == 0) {
                        area.setText("除数不能为0哦!按C");
                        sign = " ";
                    } else {
                        temp = temp / Double.valueOf(str2);
                        area.setText(String.valueOf(temp));
                        sign = " ";
                    }
                } else if (sign == " ") {
                    if (str2.length() == 0) {
                        area.setText(String.valueOf(temp));
                    } else {
                        temp = Double.valueOf(str2);
                        area.setText(String.valueOf(temp));
                    }
                } else if (sign == "s") {
                    temp = Math.sqrt(Double.valueOf(str2));
                    area.setText(String.valueOf(temp));
                    sign = " ";
                } else if (sign == "sin") {
                    temp = Math.sin(Double.valueOf(str2));
                    area.setText(String.valueOf(temp));
                    sign = " ";
                } else if (sign == "cos") {
                    temp = Math.cos(Double.valueOf(str2));
                    area.setText(String.valueOf(temp));
                    sign = " ";
                } else if (sign == "exp") {
                    temp = Math.exp(Double.valueOf(str2));
                    area.setText(String.valueOf(temp));
                    sign = " ";
                } else if (sign == "ln") {
                    temp = Math.log(Double.valueOf(str2));
                    area.setText(String.valueOf(temp));
                    sign = " ";
                }
                key = true;
            }
        }
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: java实现计算器模板及源码

本文链接: https://www.lsjlt.com/news/150613.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java实现计算器模板及源码
    计算器实现了大部分基础功能:基本运算,菜单栏选项,并且拓展了普通型和科学兴选项等等,读者可以在此基础上进行修改和拓展。其他具体实现方法可以看源码,里面有详细的概述,代码框架清晰。 运...
    99+
    2024-04-02
  • Python实现GUI计算器(附源码)
    目录效果源码效果 可执行正常加减乘除相关运算,源码已贴,自行测试。 源码 # coding=gbk """ 作者:川川 @时间 : 2022/11/6 3:10 """ from...
    99+
    2022-11-13
    Python GUI计算器 Python 计算器
  • JAVA中如何实现表达式计算源码
    这篇文章主要为大家展示了“JAVA中如何实现表达式计算源码”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JAVA中如何实现表达式计算源码”这篇文章吧。支持运算符:+-*/%><][!...
    99+
    2023-06-03
  • Android Studio实现简易计算器源码
    本文实例为大家分享了Android Studio实现简易计算器的具体代码,供大家参考,具体内容如下 效果图: 源码: 布局样式: <xml version="1.0" en...
    99+
    2024-04-02
  • C#实现简易计算器功能(附源码)
    本文实例为大家分享了C#实现简易计算器功能的具体代码,供大家参考,具体内容如下 剖析: 1、先设计界面(按钮、文本框(一个显示算式,一个显示结果))布局 2、单击按钮将其对应内容显示...
    99+
    2024-04-02
  • Java实现计算器设计
    本文实例为大家分享了Java实现计算器设计的具体代码,供大家参考,具体内容如下 需求分析 目的是实现一个基于Java的可以求解带括号加减乘除表达式的带界面的计算器。 ...
    99+
    2024-04-02
  • 分析设计模式之模板方法Java实现
    目录一、什么是模板方法设计模式1.1、模板方法的用途1.2、模板方法的定义二、定义模板方法的步骤2.1、定义模板类2.2、定义具体子类2.3、定义客户端调用2.4 下抽象类和子类之间...
    99+
    2024-04-02
  • 蝴蝶优化算法及实现源码
    目录算法简介香味具体算法参考文献群智能算法学习笔记笔记内容和仿真代码可能会不断改动如有不当之处,欢迎指正 算法简介 蝴蝶优化算法(butterfly optimization alg...
    99+
    2024-04-02
  • javascript模拟实现计算器
    本文实例为大家分享了javascript模拟实现计算器的具体代码,供大家参考,具体内容如下 功能: 1、实现单击按钮录入数字 2、实现基础四则运算功能,并添加必要的异常处理。 3、实...
    99+
    2024-04-02
  • 如何使用java代码实现计算器
    这篇“如何使用java代码实现计算器”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何使用java代码实现计算器”文章吧。运...
    99+
    2023-06-30
  • java实现计算器的代码怎么写
    以下是一个简单的Java代码实现计算器的示例:```javaimport java.util.Scanner;public class Calculator {public static void main(String[] args)...
    99+
    2023-08-11
    java
  • java LRU算法及Apache LRUMap源码实例分析
    本篇内容主要讲解“java LRU算法及Apache LRUMap源码实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java LRU算法及Apache LRUMap源...
    99+
    2023-06-21
  • Java设计模式之代理模式原理及实现代码分享
    简介Java编程的目标是实现现实不能完成的,优化现实能够完成的,是一种虚拟技术。生活中的方方面面都可以虚拟到代码中。代理模式所讲的就是现实生活中的这么一个概念:中介。代理模式的定义:给某一个对象提供一个代理,并由代理对象控制对原对象的引用。...
    99+
    2023-05-30
    java 设计模式 代理模式
  • 多模字符串匹配算法原理及Java实现代码
    多模字符串匹配算法在这里指的是在一个字符串中寻找多个模式字符字串的问题。一般来说,给出一个长字符串和很多短模式字符串,如何最快最省的求出哪些模式字符串出现在长字符串中是我们所要思考的。该算法广泛应用于关键字过滤、入侵检测、病毒检测、分词等等...
    99+
    2023-05-30
    java 多模匹配算法 多模
  • mAP计算目标检测精确度实现源码
    目录GITHUB代码下载1、IOU的概念2、TP TN FP FN的概念3、precision(精确度)和recall(召回率)4、概念举例5、单个指标的局限性什么是AP绘制mAP好...
    99+
    2024-04-02
  • java GUI实现加法计算器
    本文实例为大家分享了java GUI实现加法计算器的具体代码,供大家参考,具体内容如下 1.写出一个简易计算器需要的组件 2.先出监听事件类 public class TextC...
    99+
    2024-04-02
  • Java从源码看异步任务计算FutureTask
    目录了解一下什么是FutureTask?FutureTask 是如何实现的呢?FutureTask 运行流程FutureTask 的使用前言: 大家是否熟悉FutureTask呢?或...
    99+
    2024-04-02
  • 计算机毕设题目设计与实现(论文+源码)_kaic
                                    毕业设计(论文)题目 高校图书馆座位预约选座微信小程序设计与实现 基于防火墙的访问控制系统的设计与实现 基于区块链的农产品追溯系统设计与实现 学生公寓楼改造布线系统规划与设计...
    99+
    2023-08-31
    tomcat java c# php r语言
  • python实现AES算法及AES-CFB8加解密源码
    目录Python实现AES算法生成轮密钥加密解密完整代码如下测试测试程序Python实现AES-CFB8加解密Python实现AES算法 密码学课程老师留的作业,我觉得用python...
    99+
    2024-04-02
  • Flask框架实现debug模式下计算pin码
    目录什么是PIN码如何生成PIN生成要素PIN生成脚本CTFSHOW 801[GYCTF2020]FlaskApp什么是PIN码 pin码也就是flask在开启debug模式下,进行...
    99+
    2023-02-08
    Flask debug计算pin码 Flask 计算pin码 Flask debug pin码
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作