带括号的计算器 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做一个简易计算器,要用到哪些知识?
分析问题关键词:Java.计算器 深夜无聊,暂且一答. 计算器分两个步骤:计算 + 器 篇一 ·「器」 在编程中,我们可以把「器」理解为「GUI(图形界面)」,Java 语言描绘的图形界面有很多种类, ...
- js 月份间隔计算器_15分钟用JS做一个简易计算器
原标题:15分钟用JS做一个简易计算器 前言 这个小练手旨在帮助刚上手学习Java的同学练习最基本的Js知识,大神勿喷哈,由于这个是非常简易的计算器,可以完成的功能有加减乘除和AC(清屏),DEL(退 ...
- java 计算器_用Java编写一个简单的计算器
1.使用记事本或eclipse等编程工具,建立一个图形界面应用程序. 2.程序完成简单的四则计算功能 3.用户可以在名为Number1和Number2的文本输入框中输入2个操作数,然后点击下面的4个按 ...
- 简易计算器 java_终于写出一个简单的计算器了
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import javax.swing.*; import java.awt.event.*; import java.awt.*; import java ...
- 用java编写计算器_用Java编写一个简单的计算器
1.使用记事本或eclipse等编程工具,建立一个图形界面应用程序. 2.程序完成简单的四则计算功能 3.用户可以在名为Number1和Number2的文本输入框中输入2个操作数,然后点击下面的4个按 ...
- java实现计算器框架_[Java小程序] 实现简单计算器
这学期没事学了一点点Java,想写个程序练手,因为只学了一点点,所以暂时只能先写个实现简单功能的计算器练练.感觉写完后不是很好,如果路过的哪位高手给点建议,小弟万分感激啊. 由于期末来了,没太多时间, ...
- java 计算器api_用JAVA编写一个简单的计算器~要使用接口的~急啊~
展开全部 简单写的 可以有不对的地方 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.sw ...
- 像素鸟多线程java_用java Swing做的小游戏像素鸟-Go语言中文社区
最终效果 整个项目都是基于swing实现的.窗是口将图片加载到JPanel面板,然后将面板添加到到JFrame窗口实现显示. 这个类是选择几只像素鸟的类,也是main函数里执行的方法,代码有详细的注释 ...
最新文章
- 06-CA/TA编程:rsa demo
- range与enumerate的区别
- ios开发人员mac空间不够用的解决办法
- boost::hana::when_valid用法的测试程序
- html5点线的设置,html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点...
- js读取解析JSON类型数据【申明:来源于网络】
- python3.0程序实例_Python3 编程第一步
- java obj1 = obj2_无障碍assertEquals(Object obj1,Object obj2),想怎么比较就怎么比较!! [ 光影人像 东海陈光剑 的博客 ]...
- 正则表达式基础知识(转)
- vue-router总结2
- 模拟退火 (poj 2420, poj 2069)
- myeclipse导入项目的问题,无法next
- 华为HCNA之OSPF多区域配置实验
- java微信扫一扫_java调用微信扫一扫
- 使用HoloLens 2调用深度相机和前置摄像头
- 第二章 数列极限与数值级数
- linux运行中的一个错误解决
- 用文心大模型生成剪纸风格的城市插画
- 袁萌浅谈C919大飞机(二)
- 修改vscode终端字体
热门文章
- 如何把照片压缩到20k一下_如何将图像压缩10倍?阿里工程师有个大胆的想法!...
- 小米一键上锁工具_小米智能门锁和猫眼,可女声变男声与访客隔门沟通
- 油田智能化远程监控系统_十种远程无线视频监控系统拓扑图
- Python 处理带中文 Excel 文件
- verilog一些小知识点注意事项集合
- Linux下dislocate命令用法,五个超酷Linux命令
- 【下载】RSA1024及RSA2048加密算法漏洞CVE-2017-7526 问题出在GnuPG加密库
- 如何安装透明窗口主题Emerald在Ubuntu 13.04/12.10/12.04中-PPA
- Open-E DSS V7 应用系列之三 Web管理简介
- RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序”...