java 复合_【福利】java新手做的复合型计算器!
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
先前用那个代码不走样说要审核,我这里不用那个来发代码
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import java.awt.GridLayout;
import javax.swing.JButton;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List; public class CalculaterYYWF extends JFrame {
private JPanel contentPane;
private JTextField textField;
private List listSign = new ArrayList();
private List listNum = new ArrayList(); public static void main(String[] args) {
new CalculaterYYWF();
} public CalculaterYYWF() {
setResizable(false);
setBackground(new Color(240, 255, 240));
setTitle("有猿无粉牌计算器");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 265, 375);
contentPane = new JPanel();
contentPane.setBackground(new Color(224, 255, 255));
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
textField = new JTextField();
textField.setBounds(10, 10, 237, 44);
contentPane.add(textField);
textField.setColumns(10);
JPanel panel = new JPanel();
panel.setBackground(new Color(224, 255, 255));
panel.setBounds(10, 64, 237, 273);
contentPane.add(panel);
panel.setLayout(new GridLayout(5, 4, 5, 5));
String stmp = "123+456-789*0.%/()";
for (int i = 0; i < 18; i++) {
JButton j = new JButton(String.valueOf(stmp.charAt(i)));
j.setActionCommand(j.getText());
panel.add(j);
j.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textField.setText(textField.getText().trim()
+ e.getActionCommand());
}
});
}
JButton bt_clear = new JButton("C");
panel.add(bt_clear);
bt_clear.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textField.setText("");
}
});
JButton bt_deng = new JButton("=");
panel.add(bt_deng);
bt_deng.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String expression = textField.getText();
bracketResolve(expression);
}
});
setVisible(true);
} // 逐层消括号并计算
public void bracketResolve(String exp) {
String strjs = convertString(exp);
try {
int zkh = -1; // 要处理的括号对中左括号的位置
while ((zkh = strjs.lastIndexOf("(")) != -1) {// 每次循环处理--最里面--的哪对括号
StringBuffer str = new StringBuffer(strjs);// 存要处理的括号对里面的内容
StringBuffer str1 = new StringBuffer(strjs);// 存运算式字符串剪去处理的括号对后左边的内容
StringBuffer str2 = new StringBuffer(strjs);// 存运算式字符串剪去处理的括号对后右边的内容
str.delete(0, zkh + 1);// delete方法中end位置上的元素没有删
str1.delete(zkh, str1.length());
int ykh = str.indexOf(")");// 在最后面左括号的右边,距离左括号最近的右括号的位置(最里面的那对括号)
str.delete(ykh, str.length());
str2.delete(0, zkh + ykh + 2);// 一对括号占两位置,还有删除的最后一位加1
Double tmp = operation(new String(str));// 计算这对括号里的表达式的值
strjs = new String(str1.toString() + String.valueOf(tmp)
+ str2.toString());// 消去一对括号,重新构建表达式,循环递归处理所有的括号.
}
Double result = operation(strjs);// 分解到没有括号存在时候,进行最后一次计算.
textField.setText(String.valueOf(result));
} catch (Exception e) {
expIrregularities();// 对其他所有没考虑到的情况统一处理
} }
java 复合_【福利】java新手做的复合型计算器!相关推荐
- 带括号的计算器 java_【福利】java新手做的复合型计算器!
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 先前用那个代码不走样说要审核,我这里不用那个来发代码 import javax.swing.JFrame; import javax.swing.JPan ...
- java书籍_学习Java最好的10本书,从入门到精通
在当代,学习Java等编程课程的主要方式是视频资源,如果你想学,在网上五分钟之内就可以找到一堆学习视频,瞬间将你的硬盘填满.但是这些课程质量良莠不齐,对于小白来说很难辨别好坏. 但是书籍不同,书籍都是 ...
- java安装_使用Java 9模块化来发布零依赖本机应用程序
java安装 为什么我不能仅构建一个.EXE? 首次引入Java时,主流编程语言大多要么编译成独立的可执行文件(例如C / C ++,COBOL),要么在解释器中运行(例如Perl,Tcl). 对于许 ...
- python能解密java的_实现Java加密,Python解密的RSA非对称加密算法功能
摘要 因为最近业务需要使用到openssl的rsa非对称加密算法,研究了下它的使用方式,但是特殊在于前端分IOS和android两端,所以前端部门要求使用java给他们做一个加密工具包,但是因为服务端 ...
- java掌握_掌握Java 11的Constantdynamic
java掌握 为了使JVM对动态语言更具吸引力,该平台的第七版已将invokedynamic引入了其指令集. Java开发人员通常不会注意到此功能,因为该功能已隐藏在Java字节码中. 简而言之,通过 ...
- java常见_关于Java的常见误解
java常见 Java是世界上使用最广泛的语言(需要引用),每个人对此都有自己的见解. 由于它是主流,所以通常会嘲笑它,有时是对的,但有时批评并没有触及现实. 我将尝试解释我最喜欢的5个关于Java的 ...
- 易语言 java支持_开源Java客户端可以连接易语言服务器
我们的服务端处理客户端的连接请求是同步进行的, 每次接收到来自客户端的连接请求后, 都要先跟当前的客户端通信完之后才能再处理下一个连接请求. 这在并发比较多的情况下会严重影响程序的性能, 为此,我们可 ...
- java编译_解析 Java 即时编译器原理。
↑ 点击上面 "时代Java"关注我们,关注新技术,学习新知识! 一.导读 常见的编译型语言如C++,通常会把代码直接编译成CPU所能理解的机器码来运行.而Java为了实现&quo ...
- java 析构函数_《JAVA编程思想》5分钟速成:第5章(初始化和清理)
第五章.初始化和清理 前言 1.初始化顺序(静态成员.非静态成员,构造器.父类构造器)的排序: 2.构造器(constructor)是否可被重写(override)? 3.final, finally ...
最新文章
- 二 Array 数组常用操作方法
- apache配置优化
- 在sitecopy中设置不支持passive模式的ftp服务器
- oracle自增自删分区的脚本,oracle实现自增方法(错误ora-04098解决)
- Python内置函数之 range()
- java的响应机制_JAVA事件响应机制
- vue.js中的事件绑定-01笔记
- 百度地图怎么不显示服务器地址,百度地图使用指南
- Vienna大学5G链路级仿真平台简介
- arcgis更改默认路径
- VUE3学习笔记(细节)
- springboot +mybatis实现多表一对一查询
- IMU内参标定以及初始化(9轴IMU,比6轴多三个姿态角信息)
- 阶乘因式分解(一)/java
- 图片格式怎么转换?推荐三种实用的转换方法
- 什么是继承extends?
- SuperMap iClient3D for WebGL中加载地方天地图
- Spring IOC循环依赖问题
- PVE中安装openwrt(IMG镜像文件)
- 第二话 统计计算之蒙特卡洛积分和方差缩减技术(未完待续)
热门文章
- python tk下拉列表_如何从Tkinter中的列表创建下拉菜单?
- 编程c语言顺口溜,C语言运算符优先级顺口溜[转]
- 中查出所有姓张的学生为啥查不出来_只有笔试成绩没有面试成绩是什么原因 教师资格面试成绩怎么查...
- xp电脑怎么取消开机密码
- struts2升级jar包遇到无法正常访问action的方法的问题
- ElasticSearch里面关于日期的存储方式,解决差8个小时
- oracle定时加载文件,采用sqlldr定时将文本文件加载进入数据库
- Linux nohup实现后台运行程序及查看(nohup与)
- springboot中注入FilterRegistrationBean不生效原因
- th:text=“${user?.name}“ ${?.}