java 简易计算器

这篇具有很好参考价值的文章主要介绍了java 简易计算器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

要求:

1.使用Java图形界面组件设计软件,界面如图所示。

2.软件能够满足基本的“加、减、乘、除”等运算要求。

3.程序代码清晰,语法规范,结构合理,逻辑正确。

效果图:

java计算器,java

先分析,计算器大概是由三个大部分组成的:菜单栏,显示框,按钮。

所以定义一个类cal继承JFrame。

class cal extends JFrame  {
    private JPanel p1, p2;
    private JTextArea show;
    private String box ;
    JMenuBar menubar;//菜单
    JMenu menu1, menu2, menu3;//菜单

    StringBuffer strA;//用来存放用户输入的第一个数字
    StringBuffer strB;//用来存放用户输入的第二个数字

char oper ='~';//初始化操作符,可以随便初始化一个特殊符号,这里只是用来区分的
    double  A;
    double  B;
    private String[] text2 = {"C", "CE","%", "/",
            "7", "8", "9", "*",
            "4", "5", "6", "-",
            "1", "2", "3", "+",
            "DEL","0", ".", "="};//计算器按钮面板

    private JButton[] munButton = new JButton[text2.length];


}

我们定义完后开始初始化。

class cal extends JFrame implements ActionListener {
    private JPanel p1, p2;
    private JTextArea show;
    private String box ;
    JMenuBar menubar;
    JMenu menu1, menu2, menu3;
    StringBuffer strA;
    StringBuffer strB;



    char oper ='~';
    double  A;
    double  B;
    private String[] text2 = {"C", "CE","%", "/",
            "7", "8", "9", "*",
            "4", "5", "6", "-",
            "1", "2", "3", "+",
            "DEL","0", ".", "="};//计算器按钮面板
    private JButton[] munButton = new JButton[text2.length];





    public cal() {
        p1 = new JPanel();
        p2 = new JPanel();
        show = new JTextArea();
        p1.setSize(600, 100);
        menubar = new JMenuBar();
        menu1 = new JMenu("查看(V)");
        menu2 = new JMenu("编辑(E)");
        menu3 = new JMenu("帮助(H)");

        strB=new StringBuffer();
        strA=new StringBuffer();


    }



    public void init() {//初始化
        this.setTitle("计算器");//设置名称
        this.setBounds(200, 200, 320, 300);

        this.setLayout(new BorderLayout());//设置布局

        this.add(p1, BorderLayout.CENTER);
        this.add(p2, BorderLayout.SOUTH);
        menubar.add(menu1);
        menubar.add(menu2);
        menubar.add(menu3);
        this.setJMenuBar(menubar);
        this.setLocationRelativeTo(null);//放置在屏幕中央
        this.setResizable(false);//固定大小,用户不能调整大小

        show.setPreferredSize(new Dimension(300, 100));
        p1.add(show);
        p2.setLayout(new GridLayout(5, 4, 2, 3));
        //添加数字按键
        for (int i = 0; i < text2.length; i++) {
            munButton[i] = new JButton(text2[i] + " ");
            p2.add(munButton[i]);
        }



        for (int i = 0; i < munButton.length; i++)
            munButton[i].addActionListener(this);

        this.setVisible(true);//窗体可视化


        this.addWindowListener(new WindowAdapter() {//监听事件,当按下关闭按钮时,结束程序

            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

    }

接着我们就开始进入到这个项目的最重要的部分了。

设置按钮监听事件,通过获取按钮的信息来进行判断运算。

在我们进行加减乘除计算的时候会出现一个特殊情况,除数为0,所以我们要预防出现异常影响程序的运行,我们就要进行异常的捕获处理,这里我是自定义了一个异常类munber_Exception,然后我们利用try{}catch{}语句来进行异常捕获和处理。文章来源地址https://www.toymoban.com/news/detail-789923.html

    public double division(double x,double y)throws munber_Exception{

        if(y==0){
            throw new munber_Exception("除数不能为0!");
        }
        else{
            return x/y;
        }


    }
    @Override
    public void actionPerformed(ActionEvent e) {
        try { String act=e.getActionCommand();//这个方法返回的是事件源组件的“命令” , 这个“命令” 实际上就是事件源组件上的“Label(标签)字符串”,即如果我按了“9”这个按钮他就会返回一个“9的值”

        char a=act.charAt(0);//取act这个字符串的首字符
        if (a=='0' ||a=='1' || a=='2' ||a=='3'||a=='4'||a=='5'||a=='6'||a=='7'||a=='8'||a=='9'||a=='.') {
            if(oper=='~'){//当oper=='~'时,则操作符为空
                strA.append(a);
                show.setText(String.valueOf(strA));


            }else {
                strB.append(a);
                show.setText(String.valueOf(strA)+oper+String.valueOf(strB));


            }

        }
        else if(a=='+'||a=='-'||a=='/'||a=='*'||a=='%'){
            oper=a;
            show.setText(String.valueOf(strA)+oper);

        }
        else if(a=='='){

               A = Double.parseDouble(String.valueOf(strA));
               B = Double.parseDouble(String.valueOf(strB));
               double j;
                int len1=strA.length();
                int len2=strB.length();

               if (oper == '+') {
                   j = A + B;
                   show.setText(Double.toString(j));

                   strA.delete(0,len1);
                   strB.delete(0,len2);
                   strA.append(j);

               } else if (oper == '-') {
                   j = A - B;
                   show.setText(Double.toString(j));

                   strA.delete(0,len1);
                   strB.delete(0,len2);
                   strA.append(j);
               } else if (oper == '*') {
                   j = A * B;
                   show.setText(Double.toString(j));

                   strA.delete(0,len1);
                   strB.delete(0,len2);
                   strA.append(j);
               } else if (oper == '/') {
                   try{j= division(A, B);}catch(munber_Exception u){
                       show.setText(u.shows());
                   }
               }
               else if (oper == '%') {
                   j = A % B;
                   show.setText(Double.toString(j));

                   strA.delete(0,len1);
                   strB.delete(0,len2);
                   strA.append(j);

               }



        } else if (a=='C') {//清除
            show.setText(" ");
            oper='~';
            int len1=strA.length();
            int len2=strB.length();

            strA.delete(0,len1);
            strB.delete(0,len2);

        } else if (a=='D'){//删除
                 if(oper!='~'){
                     if(strB.length()>0){
                         strB.delete(strB.length()-1,strB.length());
                         show.setText(String.valueOf(strA)+oper+String.valueOf(strB));
                     }
                     else
                         show.setText("0");
                 }if(oper=='~'){
                     if(strA.length()>0){
                         strA.delete(strA.length()-1,strA.length());
                         show.setText(String.valueOf(strA));
                     }
            }
        }   }catch(ArithmeticException m){
        System.out.println("除数不能为0");
    }

    }

完整代码如下:

class munber_Exception  extends Exception{  //异常处理
    String e;
    public munber_Exception(){

    }
    public munber_Exception(String message){
        this.e=message;
    }
    public String shows(){
        return e;

    }
}

class cal extends JFrame implements ActionListener {
    private JPanel p1, p2;
    private JTextArea show;
    private String box ;
    JMenuBar menubar;
    JMenu menu1, menu2, menu3;
    StringBuffer strA;
    StringBuffer strB;



    char oper ='~';
    double  A;
    double  B;
    private String[] text2 = {"C", "CE","%", "/",
            "7", "8", "9", "*",
            "4", "5", "6", "-",
            "1", "2", "3", "+",
            "DEL","0", ".", "="};//计算器按钮面板
    private JButton[] munButton = new JButton[text2.length];

    public cal() {
        p1 = new JPanel();
        p2 = new JPanel();
        show = new JTextArea();
        p1.setSize(600, 100);
        menubar = new JMenuBar();
        menu1 = new JMenu("查看(V)");
        menu2 = new JMenu("编辑(E)");
        menu3 = new JMenu("帮助(H)");

        strB=new StringBuffer();
        strA=new StringBuffer();


    }



    public void init() {//初始化
        this.setTitle("计算器");
        this.setBounds(200, 200, 320, 300);

        this.setLayout(new BorderLayout());

        this.add(p1, BorderLayout.CENTER);
        this.add(p2, BorderLayout.SOUTH);
        menubar.add(menu1);
        menubar.add(menu2);
        menubar.add(menu3);
        this.setJMenuBar(menubar);
        this.setLocationRelativeTo(null);
        this.setResizable(false);

        show.setPreferredSize(new Dimension(300, 100));
        p1.add(show);
        p2.setLayout(new GridLayout(5, 4, 2, 3));
        //添加数字按键
        for (int i = 0; i < text2.length; i++) {
            munButton[i] = new JButton(text2[i] + " ");
            p2.add(munButton[i]);
        }



        for (int i = 0; i < munButton.length; i++)
            munButton[i].addActionListener(this);

        this.setVisible(true);


        this.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

    }


    public double division(double x,double y)throws munber_Exception{

        if(y==0){
            throw new munber_Exception("除数不能为0!");
        }
        else{
            return x/y;
        }


    }
    @Override
    public void actionPerformed(ActionEvent e) {
        try { String act=e.getActionCommand();
        char a=act.charAt(0);
        if (a=='0' ||a=='1' || a=='2' ||a=='3'||a=='4'||a=='5'||a=='6'||a=='7'||a=='8'||a=='9'||a=='.') {
            if(oper=='~'){
                strA.append(a);
                show.setText(String.valueOf(strA));


            }else {
                strB.append(a);
                show.setText(String.valueOf(strA)+oper+String.valueOf(strB));


            }

        }
        else if(a=='+'||a=='-'||a=='/'||a=='*'||a=='%'){
            oper=a;
            show.setText(String.valueOf(strA)+oper);

        }
        else if(a=='='){

               A = Double.parseDouble(String.valueOf(strA));
               B = Double.parseDouble(String.valueOf(strB));
               double j;
                int len1=strA.length();
                int len2=strB.length();

               if (oper == '+') {
                   j = A + B;
                   show.setText(Double.toString(j));

                   strA.delete(0,len1);
                   strB.delete(0,len2);
                   strA.append(j);

               } else if (oper == '-') {
                   j = A - B;
                   show.setText(Double.toString(j));

                   strA.delete(0,len1);
                   strB.delete(0,len2);
                   strA.append(j);
               } else if (oper == '*') {
                   j = A * B;
                   show.setText(Double.toString(j));

                   strA.delete(0,len1);
                   strB.delete(0,len2);
                   strA.append(j);
               } else if (oper == '/') {
                   try{j= division(A, B);}catch(munber_Exception u){
                       show.setText(u.shows());
                   }
               }
               else if (oper == '%') {
                   j = A % B;
                   show.setText(Double.toString(j));

                   strA.delete(0,len1);
                   strB.delete(0,len2);
                   strA.append(j);

               }



        } else if (a=='C') {
            show.setText(" ");
            oper='~';
            int len1=strA.length();
            int len2=strB.length();

            strA.delete(0,len1);
            strB.delete(0,len2);

        } else if (a=='D'){
                 if(oper!='~'){
                     if(strB.length()>0){
                         strB.delete(strB.length()-1,strB.length());
                         show.setText(String.valueOf(strA)+oper+String.valueOf(strB));
                     }
                     else
                         show.setText("0");
                 }if(oper=='~'){
                     if(strA.length()>0){
                         strA.delete(strA.length()-1,strA.length());
                         show.setText(String.valueOf(strA));
                     }
            }
        }   }catch(ArithmeticException m){
        System.out.println("除数不能为0");
    }

    }
}

public class Calculator {
//调用
    public static void main(String[] args) {
      cal Calculator1 = new cal();
        Calculator1.init();
}

    }
 

到了这里,关于java 简易计算器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java课设-百行代码实现简易计算器

    Java程序设计 工程实践 ——简易计算器的设计 院、 系 计算机与软件学院 专业 信息安全 姓 名 指导教师 2022年 6 月 11 日 目录: 一、 设计简介 2 1、 设计背景 2 2、 开发工具及环境 2 (1)开发工具及介绍 2 (2)开发环境 2 二、 相关工作 2 1、设计基础 2 2、功能需求 2 3、系统

    2024年02月04日
    浏览(74)
  • JAVA课程设计——GUI实现简易计算器

    一.设计任务及要求 任务:设计并实现一个计算器小程序 要求: 使用图形用户界面 能在键盘或鼠标上读入数据,并完成加,减,乘,除计算。 在屏幕上显示一个主菜单。 提示用户输入相应的数字键,分别执行加,减,乘,除计算功能和结束程序的功能。 二.需求分析: ​ 计算

    2024年02月12日
    浏览(41)
  • 简易计算器-课后程序(JAVA基础案例教程-黑马程序员编著-第十一章-课后作业)

    【案例11-2】 简易计算器 【案例介绍】 1. 案例描述 本案例要求利用Java Swing 图形组件开发一个可以进行简单的四则运算的图形化计算器。 2. 运行结果 运行结果   【案例分析】 要制作一个计算器,首先要知道它由哪些部分组成,如下图所示: 一个简单的图形化界面计算器,

    2024年02月03日
    浏览(45)
  • QT 简易计算器

    2024年02月09日
    浏览(42)
  • C# 制作简易计算器

    前言:环境是vs 2022 1、打开vs2022后,右边导航栏选择创建新项目。  2、选择Windows窗体应用(.net  Framework)  3、进入配置新项目界面(项目名称和位置可自行修改)点击创建  4、窗体From1即为我们要要编辑的位置  5、在窗体中添加对应的工具 6、并在对应的属性窗口为其修改

    2024年02月08日
    浏览(47)
  • MFC基于对话框——仿照Windows计算器制作C++简易计算器

    目录 一、界面设计 二、设置成员变量 三、初始化成员变量  四、初始化对话框 ​五、添加控件代码 1.各个数字的代码(0~9) 2.清除功能的代码 3.退格功能的代码 4.加减乘除功能的代码 5.小数点功能的代码 6.正负号功能的代码 7.等于功能的代码 六、源码领取方式 制作好之后

    2024年02月05日
    浏览(64)
  • 微信小程序————简易计算器

        点击页面数字按键可以计算简单的加减乘除数据运算。 页面显示   大概逻辑是当点第一次击数字键的时候要有个变量来存储这个点击的数,然后再来个记录点击运算符的变量,等要算的数全输入后,最后“=”后把前面输入的数字和运算符以字符串的形式显示在上屏幕上

    2024年02月17日
    浏览(166)
  • 前端——编写一个简易网页计算器

    如下图效果所示,输入两个运算数,点击不同的运算符,会在下方得到不同的运算结果 分析与代码实现 在HTML部分,定义了一个标题为\\\"网页计算器\\\"的网页,并创建了两个输入框和四个按钮。最后,创建了一个只读的结果显示框,便于计算结果的输出 在JavaScript部分,定义了一

    2024年01月24日
    浏览(52)
  • 微信小程序-简易计算器

    微信小程序-简易计算器,满足日常所用的的加减乘除计算 一、前期准备工作 软件环境:微信开发者工具 官方下载地址:微信开发者工具下载地址与更新日志 | 微信开放文档 1、基本需求。 简易计算器 满足日常所用的的加减乘除计算 带历史记录,查看过往计算 2、案例目录结构

    2024年02月04日
    浏览(52)
  • 【Android Studio】简易计算器

    简易计算器要求: 1,操作简单,易于掌握,界面简单。 2.方便进行加,减,乘,除等操作。数字保留小数点后两位。 3.包含小数点运算和输入回退功能。 4.能够进行多次叠加运算。 5.系统能够进行多次叠加运算。 6.系统可以稳定运行。 功能图如下: 逻辑流程图如下: 项目建

    2024年02月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包