软件编程
位置:首页>> 软件编程>> java编程>> java实现简单计算器功能

java实现简单计算器功能

作者:Zuobf_11  发布时间:2021-06-17 11:21:23 

标签:java,计算器

使用java来实现一个简单的计算器,供大家参考,具体内容如下

最近使用java制作了一个计算器,菜单栏里的功能没有实现,只是写一个版式,仅仅实现了计算功能 ,如果想要实现菜单栏功能可自行在该代码的基础上去实现。

话不多说直接上代码


package test;

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

public class calculate extends JFrame implements ActionListener {
 private Container ct;
 private JButton[] jbs;
 private String[] str;
 private JTextField jTextField;
 //cal[0]用来存储第一次输入的数
 //cal[1]用来存储运算符(+,-,*,/,%)
 //cal[2]用来存储第二次输入的数
 //cal[3]用来存储结果
 //cal[4]用来存储MS键所存储的数
 //cal[5]用来获取要存入的值(用来给cal[4]赋值)
 private String[] cal = {"","","","","",""};
 //_count和_count1始终相反,如果_count为true则表示正在输入cal[0]反之表示cal[0]输入完成,该输入cal[2]
 //当点过等号后将cal[3]的值赋给cal[0]
 private boolean _count = true;
 private boolean _count1 = false;

public calculate() {
  super("计算器");
  jbs = new JButton[28];
  ct = this.getContentPane();
  this.setBounds(100, 100, 315, 400);
  this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  ct.setLayout(null);
  //菜单栏
  JMenuBar jMenuBar = new JMenuBar();
  JMenu jm = new JMenu("查看(V)");
  JMenu jm1 = new JMenu("编辑(E)");
  JMenu jm2 = new JMenu("帮助(H)");
  jMenuBar.add(jm);
  jMenuBar.add(jm1);
  jMenuBar.add(jm2);
  this.setJMenuBar(jMenuBar);
  //输出框
  jTextField = new JTextField("0");
  jTextField.setFont(new Font("宋体", Font.BOLD, 25));
  jTextField.setEditable(false);
  jTextField.setHorizontalAlignment(JTextField.RIGHT);
  jTextField.setBounds(5, 5, 285, 65);
  ct.add(jTextField);
  //按键    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
  str = new String[]{"MC", "MR", "MS", "M+", "M-", "←", "CE", "C", "±", "√", "7", "8", "9", "/", "%", "4", "5", "6", "*", "1/x", "1", "2", "3", "-", "=", "0", ".", "+"};
  int k = 0;
  for (int i = 75; i <= 195; i = i + 40) {
   for (int init = 10; init <= 290; init = init + 57) {
    JButton jButton = new JButton(str[k]);
    jbs[k] = jButton;
    jButton.setBounds(init, i, 52, 35);
    ct.add(jButton);
    k++;
    System.out.println(k);
   }
  }
  for (int i = 235; i < 265; i = i + 40) {
   for (int j = 10; j <= 181; j = j + 57) {
    JButton jButton = new JButton(str[k]);
    jButton.setBounds(j, i, 52, 35);
    ct.add(jButton);
    jbs[k] = jButton;
    k++;
    System.out.println(k);
   }
  }
  JButton jButton = new JButton(str[k]);
  jbs[k] = jButton;
  k++;
  System.out.println(k);
  jButton.setBounds(240, 235, 52, 75);
  ct.add(jButton);
  JButton jButton2 = new JButton(str[k]);
  System.out.println(str[k]);
  jButton2.setBounds(10, 275, 109, 35);
  ct.add(jButton2);
  jbs[k] = jButton2;
  k++;
  for (int i = 275; i < 310; i = i + 40) {
   for (int j = 124; j <= 181; j = j + 57) {
    JButton jButton1 = new JButton(str[k]);
    jButton1.setBounds(j, i, 52, 35);
    ct.add(jButton1);
    jbs[k] = jButton1;
    k++;
   }
  }
  for (int i = 0; i < 28; i++) {
   jbs[i].addActionListener(this);
  }
  this.setVisible(true);
 }

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

@Override
 public void actionPerformed(ActionEvent actionEvent) {
  if (actionEvent.getActionCommand().equals(".")){
   method(actionEvent);
  }else if (actionEvent.getActionCommand().equals("0")){
   method(actionEvent);
  } else if (actionEvent.getActionCommand().equals("1")){
   method(actionEvent);
  }else if(actionEvent.getActionCommand().equals("2")){
   method(actionEvent);
  }else if (actionEvent.getActionCommand().equals("3")){
   method(actionEvent);
  }else if (actionEvent.getActionCommand().equals("4")){
   method(actionEvent);
  }else if (actionEvent.getActionCommand().equals("5")){
   method(actionEvent);
  }else if (actionEvent.getActionCommand().equals("6")){
   method(actionEvent);
  }else if (actionEvent.getActionCommand().equals("7")){
   method(actionEvent);
  }else if (actionEvent.getActionCommand().equals("8")){
   method(actionEvent);
  }else if (actionEvent.getActionCommand().equals("9")){
   method(actionEvent);
  }else if (actionEvent.getActionCommand().equals("±")){
   if(_count){
    if (cal[0].contains(".")){
     cal[0] = String.valueOf(Double.parseDouble(cal[0]) * (-1));
     jTextField.setText(cal[0]);
    }else {
     cal[0] = String.valueOf(Integer.parseInt(cal[0]) * (-1));
     jTextField.setText(cal[0]);
    }
   }else {
    if (cal[2].contains(".")){
     cal[2] = String.valueOf(Double.parseDouble(cal[2]) * (-1));
     jTextField.setText(cal[2]);
    }else {
     cal[2] = String.valueOf(Integer.parseInt(cal[2]) * (-1));
     jTextField.setText(cal[2]);
    }
   }
  }else if(actionEvent.getActionCommand().equals("√")){
   if(_count){
    cal[0] = String.valueOf(Math.pow(Double.parseDouble(cal[0]),0.5));
    jTextField.setText(cal[0]);
   }else {
    cal[2] = String.valueOf(Math.pow(Double.parseDouble(cal[2]),0.5));
    jTextField.setText(cal[2]);
   }
  }else if(actionEvent.getActionCommand().equals("1/x")){
   if(_count){
    cal[0] = String.valueOf(1/Double.parseDouble(cal[0]));
    jTextField.setText(cal[0]);
   }else {
    cal[2] = String.valueOf(1/Double.parseDouble(cal[2]));
    jTextField.setText(cal[2]);
   }
  }else if(actionEvent.getActionCommand().equals("←")){
   if(_count){
    cal[0] = cal[0].substring(0,cal[0].length()-1);
    if(cal[0].equals("")){
     jTextField.setText("0");
    }else {
     jTextField.setText(cal[0]);
    }
   }else {
    cal[2] = cal[2].substring(0,cal[2].length()-1);
    if(cal[2].equals("")){
     jTextField.setText("0");
    }else {
     jTextField.setText(cal[2]);
    }
   }
  }else if(actionEvent.getActionCommand().equals("CE")){
   if (_count){
    cal[0]="";
    jTextField.setText("0");
   }else {
    cal[2]="";
    jTextField.setText("0");
   }
  }else if(actionEvent.getActionCommand().equals("C")){
   _count = true;
   cal[0]="";
   cal[1]="";
   cal[2]="";
   cal[3]="";
   jTextField.setText("0");
  }else if (actionEvent.getActionCommand().equals("+")){
   if (!cal[0].equals("")&&!cal[2].equals("")){
    if (cal[0].contains(".") || cal[2].contains(".")){
     cal[0]=String.valueOf(Double.parseDouble(cal[0]) + Double.parseDouble(cal[2]));
    }else {
     cal[0] = String.valueOf(Integer.parseInt(cal[0]) + Integer.parseInt(cal[2]));
    }
    cal[2]="";
   }
   cal[1] = "+";
   _count=false;
   jTextField.setText(cal[1]);
  }else if (actionEvent.getActionCommand().equals("-")){
   if (!cal[0].equals("")&&!cal[2].equals("")){
    if (cal[0].contains(".") || cal[2].contains(".")){
     cal[0]=String.valueOf(Double.parseDouble(cal[0]) - Double.parseDouble(cal[2]));
    }else {
     cal[0] = String.valueOf(Integer.parseInt(cal[0]) - Integer.parseInt(cal[2]));
    }
    cal[2]="";
   }
   cal[1] = "-";
   _count=false;
   jTextField.setText(cal[1]);
  }else if (actionEvent.getActionCommand().equals("*")){
   if (!cal[0].equals("")&&!cal[2].equals("")){
    if (cal[0].contains(".") || cal[2].contains(".")){
     cal[0]=String.valueOf(Double.parseDouble(cal[0]) * Double.parseDouble(cal[2]));
    }else {
     cal[0] = String.valueOf(Integer.parseInt(cal[0]) * Integer.parseInt(cal[2]));
    }
    cal[2]="";
   }
   cal[1] = "*";
   _count=false;
   jTextField.setText(cal[1]);
  }else if (actionEvent.getActionCommand().equals("/")){
   if (!cal[0].equals("")&&!cal[2].equals("")){
    if (cal[0].contains(".") || cal[2].contains(".")){
     cal[0]=String.valueOf(Double.parseDouble(cal[0]) / Double.parseDouble(cal[2]));
    }else {
     cal[0] = String.valueOf(Integer.parseInt(cal[0]) / Integer.parseInt(cal[2]));
    }
    cal[2]="";
   }
   cal[1] = "/";
   _count=false;
   jTextField.setText(cal[1]);
  }else if (actionEvent.getActionCommand().equals("%")){
   cal[0]=String.valueOf(Integer.parseInt(cal[0]) % Integer.parseInt(cal[2]));
   cal[2]="";
   cal[1] = "%";
   _count=false;
   jTextField.setText(cal[1]);
  }else if (actionEvent.getActionCommand().equals("=")){
   if(cal[0].equals("")&&cal[2].equals("")){
    jTextField.setText("0");
   }else if(!cal[0].equals("")&&cal[2].equals("")){
    jTextField.setText(cal[0]);
   }else if(!cal[0].equals("")&&!cal[2].equals("")){
    if(cal[1].equals("+")){
     if (cal[0].contains(".") || cal[2].contains(".")){
      cal[3]=String.valueOf(Double.parseDouble(cal[0]) + Double.parseDouble(cal[2]));
     }else {
      cal[3] = String.valueOf(Integer.parseInt(cal[0]) + Integer.parseInt(cal[2]));
     }
     jTextField.setText(cal[3]);
    }else if (cal[1].equals("-")){
     if (cal[0].contains(".") || cal[2].contains(".")){
      cal[3]=String.valueOf(Double.parseDouble(cal[0]) - Double.parseDouble(cal[2]));
     }else {
      cal[3] = String.valueOf(Integer.parseInt(cal[0]) - Integer.parseInt(cal[2]));
     }
     jTextField.setText(cal[3]);
    }else if(cal[1].equals("*")){
     if (cal[0].contains(".") || cal[2].contains(".")){
      cal[3]=String.valueOf(Double.parseDouble(cal[0]) * Double.parseDouble(cal[2]));
     }else {
      cal[3] = String.valueOf(Integer.parseInt(cal[0]) * Integer.parseInt(cal[2]));
     }
     jTextField.setText(cal[3]);
    }else if (cal[1].equals("/")){
     if (cal[0].contains(".") || cal[2].contains(".")){
      cal[3]=String.valueOf(Double.parseDouble(cal[0]) / Double.parseDouble(cal[2]));
     }else {
      cal[3] = String.valueOf(Integer.parseInt(cal[0]) / Integer.parseInt(cal[2]));
     }
     jTextField.setText(cal[3]);
    }else if (cal[1].equals("%")){
     cal[3]=String.valueOf(Integer.parseInt(cal[0]) % Integer.parseInt(cal[2]));
     jTextField.setText(cal[3]);
    }
   }
   cal[0]=cal[3];
   cal[2]="";
   _count=true;
   _count1 = true;
   cal[5]=cal[0];
  }else if(actionEvent.getActionCommand().equals("MC")){
   cal[4]="";
  }else if(actionEvent.getActionCommand().equals("MR")){
   if(_count){
    if(!cal[4].equals("")){
     cal[0]=cal[4];
     jTextField.setText(cal[0]);
    }
   }else {
    if(!cal[4].equals("")){
     cal[2]=cal[4];
     jTextField.setText(cal[2]);
    }
   }
  }else if(actionEvent.getActionCommand().equals("MS")){
   if(_count){
    cal[0]="";
   }
   cal[4]=cal[5];
   System.out.println("cal[5]"+cal[5]);
   System.out.println("ms:"+cal[4]);
  }else if(actionEvent.getActionCommand().equals("M+")){
   if(!cal[4].equals("")){
    if (cal[4].contains(".") || cal[5].contains(".")){
     cal[4]=String.valueOf(Double.parseDouble(cal[4]) + Double.parseDouble(cal[5]));
    }else {
     cal[4] = String.valueOf(Integer.parseInt(cal[4]) + Integer.parseInt(cal[5]));
    }
   }
  }else if(actionEvent.getActionCommand().equals("M-")){
   if(!cal[4].equals("")){
    if (cal[4].contains(".") || cal[5].contains(".")){
     cal[4]=String.valueOf(Double.parseDouble(cal[4]) - Double.parseDouble(cal[5]));
    }else {
     cal[4] = String.valueOf(Integer.parseInt(cal[4]) - Integer.parseInt(cal[5]));
    }
   }
  }
 }
 public void method(ActionEvent actionEvent){
  if(_count){
   if (_count1){
    cal[0]="";
    _count1=false;
   }
   cal[0] += actionEvent.getActionCommand();
   cal[5]=cal[0];
   System.out.println(cal[5]);
  }else {
   cal[2] += actionEvent.getActionCommand();
   cal[5]=cal[2];
  }
  jTextField.setText(actionEvent.getActionCommand());
 }
}

效果图:

java实现简单计算器功能

来源:https://blog.csdn.net/Zuobf_bk/article/details/110317606

0
投稿

猜你喜欢

  • 跨域跨域请求是指浏览器脚本文件在发送请求时,脚本所在的服务器和请求的服务器地址不一样。跨域是有浏览器的同源策略造成的,是浏览器对JavaSc
  • 1 * * 是Spring中的概念,和过滤器类似,可以对用户请求进行拦截过滤处理。但是相对于过滤器而言, * 要的控制更加的细节, *
  • 在前面的《基于任务的异步编程模式(TAP)》文章中讲述了.net 4.5框架下的异步操作自我实现方式,实际上,在.net 4.5中部分类已实
  • JSTL条件行为和遍历行为JSTL的条件行为标签有四个:if,choose,when,otherwise标签1、if标签是对某一个条件进行测
  • 使用ehcache-spring-annotations使得在工程中简单配置即可使用缓存下载地址:http://code.google.co
  • 在application.properties中填写中文信息,在读取该文件时会出现中文乱码问题。比如:application.propert
  • java 数据结构单链表的实现   单链表实现链表的打印及元素删除操作,链表的实现主要是next属性的定义,将一堆节点关
  • 本文实例总结了MFC程序设计常用技巧。分享给大家供大家参考。具体如下:1.属性页的添加:创建对话框的类,该类要从CpropertyPage继
  • 前提前段时间在做一个对外的网关项目,涉及到加密和解密模块,这里详细分析解决方案和适用的场景。为了模拟真实的交互场景,先定制一下整个交互流程。
  • 基于Java的简单的企业员工管理系统,供大家参考,具体内容如下首先创建了一个员工类定义员工应有的属性:工号、姓名、性别、职位、年龄、工资、部
  • 实现文档在线预览的方式除了上篇文章《文档在线预览(一)通过将txt、word、pdf转成图片实现在线预览功能》说的将文档转成图片的实现方式外
  • 本文实例为大家分享了RxJava Retrofit实现购物车展示的具体代码,供大家参考,具体内容如下先给大家展示一下效果图框架结构: 1.项
  • 不论是float 还是double都是浮点数,而计算机是二进制的,浮点数会失去一定的精确度。Java在java.math包中提供的API类B
  • 父类空间优先于子类对象产生在每次创建子类对象时,先初始化父类空间,再创建其子类对象本身。目的在于子类对象中包含了其对应的父类空间,便可以包含
  • List 是在开发中比较常用的集合,今天总结一下 Java 中初始化 List 的几种方式。1、常规方式List<String>
  • 概述在移动应用开发中,消息推送可以说是一项非常重要的功能,它能够起到提醒或者唤醒用户的作用,同时也是产品运营人员更高效地实现运营目标的重要手
  • 为什么要重复造轮子你可能会问,Spring已经自带了全局异常拦截,为什么还要重复造轮子呢?这是个好问题,我觉得有以下几个原因装逼Spring
  • 自动装配的含义在SpringBoot程序main方法中,添加@SpringBootApplication或者@EnableAutoConfi
  • jmap命令可以打印java进程的JVM堆信息,今天在某台机器上运行该命令查看 19560进程的堆信息jmap -heap 19560出现以
  • 小编为面试Java程序员的朋友们整理了2017非常热门的面试中的笔试试题,如果你是一个正在准备面试Java程序员的读者,赶快学习一下吧。1,
手机版 软件编程 asp之家 www.aspxhome.com