该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

先前用那个代码不走样说要审核,我这里不用那个来发代码

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新手做的复合型计算器!相关推荐

  1. 带括号的计算器 java_【福利】java新手做的复合型计算器!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 先前用那个代码不走样说要审核,我这里不用那个来发代码 import javax.swing.JFrame; import javax.swing.JPan ...

  2. java书籍_学习Java最好的10本书,从入门到精通

    在当代,学习Java等编程课程的主要方式是视频资源,如果你想学,在网上五分钟之内就可以找到一堆学习视频,瞬间将你的硬盘填满.但是这些课程质量良莠不齐,对于小白来说很难辨别好坏. 但是书籍不同,书籍都是 ...

  3. java安装_使用Java 9模块化来发布零依赖本机应用程序

    java安装 为什么我不能仅构建一个.EXE? 首次引入Java时,主流编程语言大多要么编译成独立的可执行文件(例如C / C ++,COBOL),要么在解释器中运行(例如Perl,Tcl). 对于许 ...

  4. python能解密java的_实现Java加密,Python解密的RSA非对称加密算法功能

    摘要 因为最近业务需要使用到openssl的rsa非对称加密算法,研究了下它的使用方式,但是特殊在于前端分IOS和android两端,所以前端部门要求使用java给他们做一个加密工具包,但是因为服务端 ...

  5. java掌握_掌握Java 11的Constantdynamic

    java掌握 为了使JVM对动态语言更具吸引力,该平台的第七版已将invokedynamic引入了其指令集. Java开发人员通常不会注意到此功能,因为该功能已隐藏在Java字节码中. 简而言之,通过 ...

  6. java常见_关于Java的常见误解

    java常见 Java是世界上使用最广泛的语言(需要引用),每个人对此都有自己的见解. 由于它是主流,所以通常会嘲笑它,有时是对的,但有时批评并没有触及现实. 我将尝试解释我最喜欢的5个关于Java的 ...

  7. 易语言 java支持_开源Java客户端可以连接易语言服务器

    我们的服务端处理客户端的连接请求是同步进行的, 每次接收到来自客户端的连接请求后, 都要先跟当前的客户端通信完之后才能再处理下一个连接请求. 这在并发比较多的情况下会严重影响程序的性能, 为此,我们可 ...

  8. java编译_解析 Java 即时编译器原理。

    ↑ 点击上面 "时代Java"关注我们,关注新技术,学习新知识! 一.导读 常见的编译型语言如C++,通常会把代码直接编译成CPU所能理解的机器码来运行.而Java为了实现&quo ...

  9. java 析构函数_《JAVA编程思想》5分钟速成:第5章(初始化和清理)

    第五章.初始化和清理 前言 1.初始化顺序(静态成员.非静态成员,构造器.父类构造器)的排序: 2.构造器(constructor)是否可被重写(override)? 3.final, finally ...

最新文章

  1. 二 Array 数组常用操作方法
  2. apache配置优化
  3. 在sitecopy中设置不支持passive模式的ftp服务器
  4. oracle自增自删分区的脚本,oracle实现自增方法(错误ora-04098解决)
  5. Python内置函数之 range()
  6. java的响应机制_JAVA事件响应机制
  7. vue.js中的事件绑定-01笔记
  8. 百度地图怎么不显示服务器地址,百度地图使用指南
  9. Vienna大学5G链路级仿真平台简介
  10. arcgis更改默认路径
  11. VUE3学习笔记(细节)
  12. springboot +mybatis实现多表一对一查询
  13. IMU内参标定以及初始化(9轴IMU,比6轴多三个姿态角信息)
  14. 阶乘因式分解(一)/java
  15. 图片格式怎么转换?推荐三种实用的转换方法
  16. 什么是继承extends?
  17. SuperMap iClient3D for WebGL中加载地方天地图
  18. Spring IOC循环依赖问题
  19. PVE中安装openwrt(IMG镜像文件)
  20. 第二话 统计计算之蒙特卡洛积分和方差缩减技术(未完待续)

热门文章

  1. python tk下拉列表_如何从Tkinter中的列表创建下拉菜单?
  2. 编程c语言顺口溜,C语言运算符优先级顺口溜[转]
  3. 中查出所有姓张的学生为啥查不出来_只有笔试成绩没有面试成绩是什么原因 教师资格面试成绩怎么查...
  4. xp电脑怎么取消开机密码
  5. struts2升级jar包遇到无法正常访问action的方法的问题
  6. ElasticSearch里面关于日期的存储方式,解决差8个小时
  7. oracle定时加载文件,采用sqlldr定时将文本文件加载进入数据库
  8. Linux nohup实现后台运行程序及查看(nohup与)
  9. springboot中注入FilterRegistrationBean不生效原因
  10. th:text=“${user?.name}“ ${?.}