展开全部

参考代码:62616964757a686964616fe78988e69d8331333337393635import java.awt.*;

import java.awt.event.*;

import java.math.BigDecimal;

import javax.swing.*;

//创建计算器Calculator类,实现ActionListener接口

public class Calculater implements ActionListener {

//定义变量和按钮数组

private String[] names = {"Backspace","CE","C","+","7","8","9","-",

"4","5","6","*","1","2","3","/","0","+/-",".","="

};

private JButton[] buttonArray = new JButton[names.length];

private boolean append = false;//默认追加为false

private String operator = "+";//默认运算符为“+”

private String s1 = "0";//默认字符为0

private String ss = "0";//默认字符为0

//创建可以显示20个字符的文本框

JTextField jtf = new JTextField(20);

//构造方法

public Calculater() {}

public Calculater(String title) {

//创建窗口、面板,并设置面板布局为网格布局

JFrame jf = new JFrame(title);

JPanel jp = new JPanel();

jp.setLayout(new GridLayout(5,4));

//依次添加按钮到面板中,并为按钮注册监听器

for (int i = 0; i

buttonArray[i] = new JButton(names[i]);

buttonArray[i].addActionListener(this);

jp.add(buttonArray[i]);

}

//添加文本框到窗体中

jf.add(jtf,BorderLayout.NORTH);

jf.add(jp);//添加面板到窗体中

jtf.setHorizontalAlignment(JTextField.RIGHT);//设置文本框的水平方向为右

jtf.setText("0");//设置初始文本为0

jtf.setEditable(false);//设置文本框为不可编辑状态

//设置窗体属性

jf.pack();//系统自动设置大小和位置

jf.setVisible(true);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

//实现监听接口的actionPerformed方法

public void actionPerformed(ActionEvent e) {

String comm = e.getActionCommand();

if(comm.matches("\\d")) { //用正则表达式判断输出的是否是0~9

if(append) { //如果是,追加显示

String temp = jtf.getText();

jtf.setText(temp + comm);

} else { //如果不是,显示该字符并将追加设置为true

jtf.setText(comm);

append = true;

}

} else if(comm.equals(".")) { //输入小数点时

String temp = jtf.getText();

if(temp.indexOf(".")== -1 && append) { //当输入的文本中没有小数点时

jtf.setText(temp+comm);

append = true;//输入小数点后继续追加

} else if(!append) {//当字符串开始时候先输入 " . " 则直接输出" 0. "

jtf.setText("0"+comm);

append = true;

}

} else if("+-*/".indexOf(comm)!= -1) { //输入加减乘除符号时,

//以下运算应该注意数据类型,尤其是大数字和浮点数及int数在运算中的区别

operator = comm;

s1 = jtf.getText();

double d3 = Double.parseDouble(s1);

double d4 = Double.parseDouble(ss);

BigDecimal bd3 = new BigDecimal(d3+"");

BigDecimal bd4 = new BigDecimal(d4+"");

if(operator.equals("+")) { //加法时

d3 = bd3.add(bd4).doubleValue();

ss = d3+"";

jtf.setText(ss);

} else if(operator.equals("-")) { //减法时

if(d4 == 0.0) {

ss = s1;

jtf.setText(ss);

} else {

d3 = bd4.subtract(bd3).doubleValue();

ss = d3+"";

jtf.setText(ss);

}

} else if(operator.equals("*")) { //乘法时

if(d4 == 0.0) {

ss = s1;

jtf.setText(ss);

} else {

d3 = bd3.multiply(bd4).doubleValue();

ss = d3+"";

jtf.setText(ss);

}

} else if(operator.equals("/")) { //除法时

if(d4 == 0.0) {

ss = s1;

jtf.setText(s1);

} else {

d3 = bd4.divide(bd3,15,BigDecimal.ROUND_HALF_UP).doubleValue();

}

ss = d3+"";

jtf.setText(ss);

}

append = false;//不继续追加

} else if(comm.equals("=")) { //输入等号时,计算加减乘除的结果

String s2 = jtf.getText();

double d1 = Double.parseDouble(ss);

double d2 = Double.parseDouble(s2);

BigDecimal bd1 = new BigDecimal(d1+"");

BigDecimal bd2 = new BigDecimal(d2+"");

if(operator.equals("+")) {

d1 = bd1.add(bd2).doubleValue();

} else if(operator.equals("-")) {

d1 = bd1.subtract(bd2).doubleValue();

} else if(operator.equals("*")) {

d1 = bd1.multiply(bd2).doubleValue();

} else if(operator.equals("/")) { //精确计算浮点除法

if(d2!=0.0) {

d1 = bd1.divide(bd2,15,BigDecimal.ROUND_HALF_UP).doubleValue();

}

}

ss = "0";

jtf.setText(d1+"");

append = false;//不继续追加

} else if(comm.equals("CE")||comm.equals("C")) { //输入CE或C时

jtf.setText("0");

ss = "0";

append = false;

} else if(comm.equals("+/-")) { //改变数值的正负号

String temp = jtf.getText();

if(!append) {

jtf.setText("-");

append = true;

} else if(temp.startsWith("-")) { //如果字符串以负号开头

jtf.setText(temp.substring(1));

} else {

jtf.setText("-" + temp);

}

} else if(comm.equals("Backspace")) { //输入Backspace时,退回一个字符

String temp = jtf.getText();

if(temp.length()>0)

jtf.setText(temp.substring(0,temp.length()-1));

}

}

//主方法

public static void main(String[] args) {

//创建名为Calculator的计算器对象

new Calculater("计算器");

}

}

Java正则表达式实现计算器_用java编写win7计算器相关推荐

  1. java正则表达式控制格式_“如果Java受到一两个大型供应商的控制,则可能会遭受挫折”...

    java正则表达式控制格式 "多云和多平台策略不一定是过渡的临时时期" 距科技巨头IBM宣布以340亿美元收购Red Hat不到一个月. 根据新闻稿 ," 2018年最重 ...

  2. java 正则表达式 单引号_关于Java:用Regex替换单引号和双引号

    我有一个接收到格式错误的JSON字符串的应用,如下所示: {'username' : 'xirby'} 我需要将双引号"替换为单引号' 遵循以下规则(我认为): {后带有一个或多个空格的单引 ...

  3. java 正则表达式的包_用于Java包名称的Python正则表达式

    我在使用 Python确定有效的Java包名称时遇到问题.这是代码: packageName = "com.domain.lala" # valid, not rejected - ...

  4. java正则表达式过滤特殊字符_使用Java正则表达式过滤特殊字符

    在某航空集团,系统参数必须过滤一下字符,于是正则表达式处理拦路了! 需求: 系统输入框(所有输入框),所有URL,过滤以下关键字和特殊字符(下述字符,有哪些影响到业务系统使用的,请具体列出,并说明原因 ...

  5. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  6. java正则表达式判断手机号_正则表达式学习之简单手机号和邮箱练习

    正则表达式的组成规则 在java中,正则表达式的编译是类 java.util.regex.Pattern 正则表达式的构造摘要 1.字符x 包括所有大写和小写字母.所有数字.所有标点符号和一些其他符号 ...

  7. java正则表达式替换特殊字符_使用正则表达式替换报表名称中的特殊字符(推荐)...

    正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表通常被用来检索.替换那些符合某个模式(规则)的文 ...

  8. 编写java程序的三步骤_帮助Java小白涨知识的教程(三)(运行HelloWorld程序)

    总共有三个步骤:编写----------编译-----------执行 要用的文件:文字编译器(notepad++\editplus...)------------------------------ ...

  9. java汽车油耗计算_转发一个手机油耗计算器 (java)

    今天在一个汽车论坛上看见的,试了试,还真不错. 比以前那个Fuel Consumption 功能要强大,虽然都是JAVA软件. 小罗盘手机计算器是作者独自产品策划.美术设计.程序开发.测试发布的手机应 ...

  10. java正则表达式 匹配次数_正则表达式教程之重复匹配详解

    本文实例讲述了正则表达式教程之重复匹配.分享给大家供大家参考,具体如下: 注:在所有例子中正则表达式匹配结果包含在源文本中的[和]之间,有的例子会使用Java来实现,如果是java本身正则表达式的用法 ...

最新文章

  1. 概率分布函数的关系框架
  2. c语言的舞蹈机器人开题报告范文,现代舞编创手法在拉丁表演舞中的应用研究—本科开题报告...
  3. 失去循环标签的Python,我这样实现跳出外层循环
  4. 用 dash_bootstrap_components 为 dash 生成美观的导航栏
  5. linux系统各种日志存储路径和详细介绍
  6. mac os x 安装mysql遇到 Access denied for user 'root'@'localhost' (using password: YES)的解决方法...
  7. unity, itween 对不透明对象使用FadeTo需要先更换material
  8. ZOJ 1203[Swordfish]
  9. linux下执行efi文件,在Linux下创建EFI BIOS Grub加载分区
  10. vmware station密钥
  11. windows7破解登陆密码
  12. 高等数学-用等价无穷小求极限题集
  13. java 在pdf中插入图片_如何在PDF文档内容中插入/添加图片文件
  14. 饥荒如何解锁机器人_饥荒人物怎么解锁
  15. 普通文档怎么换成php,wps只读文档怎么修改为普通文档
  16. Linux刻录光盘win10认不到,win10系统刻录光盘光驱无法识别光盘的具体方法
  17. 彻底剖析ISAServer客户端及配置之一
  18. video标签挡住了下拉框
  19. 如何制作照片马赛克礼物
  20. iphone怎么更新9.0系统更新服务器,iOS 9 推送前你必须知道的几件事:iOS 9 升级指南...

热门文章

  1. 2pin接口耳机_悦耳好音质,续航10小时,用了小米生态链这款耳机,扔掉其它吧...
  2. oracle 拷贝文件到asm,Oracle 从ASM复制文件到文件系统
  3. 单片机中断机制对日常生活的启示_单片机原理部分课后习题解
  4. 使用require.context实现前端工程自动化
  5. vue-cli3 环境设置
  6. SpringBoot项目的application.properties放在Jar包外加载
  7. Unity 2018.3地形功能更新介绍
  8. 对Unity的Resources目录进行改名
  9. highlight js 为博客增加代码着色
  10. PLSQL导出触发器代码