网站首页 > java教程 正文
最近失业在家,用java写了个四则混合运算的例子,支持括号(),负数,浮点数,空格,三角函数中的sin,cos,tan;支持括号匹配检测 等
例如:
((-29.78))+ (( sin(3-8))*(-6-4))*10.8+2*(4+6.7*3)*3-1*(7+4)/2*(-7*((4-3/5)))-4*sin(6.7-2*cos(6-7/5+tan(7*3.1-3))+4-7)-7+50-5*(-3)
程序具体执行过程如下:
要计算的字符串为:((-29.78))+ (( sin(3-8))*(-6-4))*10.8+2*(4+6.7*3)*3-1*(7+4)/2*(-7*((4-3/5)))-4*sin(6.7-2*cos(6-7/5+tan(7*3.1-3))+4-7)-7+50-5*(-3)
分割数字和操作符后为:[(, (, -, 29.78, ), ), +, (, (, sin(, 3, -, 8, ), ), *, (, -, 6, -, 4, ), ), *, 10.8, +, 2, *, (, 4, +, 6.7, *, 3, ), *, 3, -, 1, *, (, 7, +, 4, ), /, 2, *, (, -, 7, *, (, (, 4, -, 3, /, 5, ), ), ), -, 4, *, sin(, 6.7, -, 2, *, cos(, 6, -, 7, /, 5, +, tan(, 7, *, 3.1, -, 3, ), ), +, 4, -, 7, ), -, 7, +, 50, -, 5, *, (, -, 3, )]
把负数的负号和数字连接起来,再去负数的括号:[(, -29.78, ), +, (, (, sin(, 3, -, 8, ), ), *, (, -6, -, 4, ), ), *, 10.8, +, 2, *, (, 4, +, 6.7, *, 3, ), *, 3, -, 1, *, (, 7, +, 4, ), /, 2, *, (, -7, *, (, (, 4, -, 3, /, 5, ), ), ), -, 4, *, sin(, 6.7, -, 2, *, cos(, 6, -, 7, /, 5, +, tan(, 7, *, 3.1, -, 3, ), ), +, 4, -, 7, ), -, 7, +, 50, -, 5, *, -3]
-----------------------------
去括号:(-29.78)=-29.78
计算乘除:6.7*3=20.1
计算乘除:3/5=0.6
计算乘除:7/5=1.4
计算乘除:7*3.1=21.7
计算乘除:5*-3=-15.0
中间过程计算字符串为:(-29.78)+((sin(3-8))*((-6)-4))*10.8+2*(4+20.1)*3-1*(7+4)/2*((-7)*((4-0.6)))-4*sin(6.7-2*cos(6-1.4+tan(21.7-3))+4-7)-7+50-(-15.0)
-----------------------
计算三角函数中的单运算:sin(3-8)=0.9589242746631385
计算()中的单运算:(-6-4)=-10.0
计算()中的单运算:(4+20.1)=24.1
计算()中的单运算:(7+4)=11.0
计算()中的单运算:(4-0.6)=3.4
计算加减平级中的单运算:6-1.4=4.6
计算三角函数中的单运算:tan(21.7-3)=-0.1506810264752362
计算三角函数中的单运算:cos(4.6+-0.1506810264752362)=-0.26004615961032745
中间过程计算字符串为:(-29.78)+((0.9589242746631385)*(-10.0))*10.8+2*24.1*3-1*11.0/2*((-7)*(3.4))-4*sin(6.7-2*(-0.26004615961032745)+4-7)-7+50-(-15.0)
-----------------------
去括号:(0.9589242746631385)=0.9589242746631385
计算乘除:0.9589242746631385*-10.0=-9.589242746631385
去括号:(-9.589242746631385)=-9.589242746631385
计算乘除:-9.589242746631385*10.8=-103.56382166361897
计算乘除:2*24.1=48.2
计算乘除:48.2*3=144.60000000000002
计算乘除:1*11.0=11.0
计算乘除:11.0/2=5.5
去括号:(3.4)=3.4
计算乘除:2*-0.26004615961032745=-0.5200923192206549
中间过程计算字符串为:(-29.78)+(-103.56382166361897)+144.60000000000002-5.5*((-7)*3.4)-4*sin(6.7-(-0.5200923192206549)+4-7)-7+50-(-15.0)
-----------------------
计算()中的单运算:(-7*3.4)=-23.8
计算加减平级中的单运算:6.7--0.5200923192206549=7.220092319220655
计算加减平级中的单运算:7.220092319220655+4=11.220092319220655
计算三角函数中的单运算:sin(11.220092319220655-7)=-0.8812496643615821
中间过程计算字符串为:(-29.78)+(-103.56382166361897)+144.60000000000002-5.5*(-23.8)-4*(-0.8812496643615821)-7+50-(-15.0)
-----------------------
计算乘除:5.5*-23.8=-130.9
计算乘除:4*-0.8812496643615821=-3.5249986574463286
中间过程计算字符串为:(-29.78)+(-103.56382166361897)+144.60000000000002-(-130.9)-(-3.5249986574463286)-7+50-(-15.0)
-----------------------
中间过程计算字符串为:(-29.78)+(-103.56382166361897)+144.60000000000002-(-130.9)-(-3.5249986574463286)-7+50-(-15.0)
-----------------------
计算乘除和括号后为:[-29.78, +, -103.56382166361897, +, 144.60000000000002, -, -130.9, -, -3.5249986574463286, -, 7, +, 50, -, -15.0]
计算加减:-29.78+-103.56382166361897=-133.34382166361897
计算加减:-133.34382166361897+144.60000000000002=11.256178336381055
计算加减:11.256178336381055--130.9=142.15617833638106
计算加减:142.15617833638106--3.5249986574463286=145.6811769938274
计算加减:145.6811769938274-7=138.6811769938274
计算加减:138.6811769938274+50=188.6811769938274
计算加减:188.6811769938274--15.0=203.6811769938274
中间过程计算字符串为:203.6811769938274
---------
计算加减和括号后为:[203.6811769938274]
计算结果是:203.6811769938274
不知道有没有付费需要的,哈哈!
2021-8-25
猜你喜欢
- 2024-11-12 java计算s=a+aa+aaa+aaa...a#java
- 2024-11-12 Java 计算Excel工作表的数量(java excel 公式)
- 2024-11-12 Java 计算 1 到 1,000,000 的和(java计算两个日期之间的天数)
- 2024-11-12 一文读懂关于Java BigDecimal如何实现加减乘除运算和比较大小
- 2024-11-12 07-递增、递减运算 (java) 一个视频学会一个编程知识点
- 2024-11-12 教大家如何利用JAVA语言来计算两个数的和
- 2024-11-12 Java教程:任意大整数的相加运算(java实验处理大整数)
- 2024-11-12 【Java技巧】如何巧妙解决Excel公式迭代计算难题?
- 2024-11-12 JAVA快速入门——布尔运算(java 布尔)
- 2024-11-12 用java计算数学题真的方便(java计算题怎么算)
你 发表评论:
欢迎- 06-15Linux中如何通过Shell脚本来控制Spring Boot的Jar包启停服务?
- 06-15推荐一款超棒的SpringCloud 脚手架项目
- 06-15IDEA将项目打包成jar包(idea打包普通java项目)
- 06-15Spring Boot3 项目 jar 包打包成 Docker 镜像全攻略
- 06-15记录Dockerfile将jar包构建成部署所需的镜像
- 06-15项目基础部署汇总八---linux下xxl-job安装
- 06-15Spring Boot Jar 包秒变 Docker 镜像实现多环境部署
- 06-15终端执行 java -jar example.jar 时报错:“没有主清单属性” 的解决
- 最近发表
-
- Linux中如何通过Shell脚本来控制Spring Boot的Jar包启停服务?
- 推荐一款超棒的SpringCloud 脚手架项目
- IDEA将项目打包成jar包(idea打包普通java项目)
- Spring Boot3 项目 jar 包打包成 Docker 镜像全攻略
- 记录Dockerfile将jar包构建成部署所需的镜像
- 项目基础部署汇总八---linux下xxl-job安装
- Spring Boot Jar 包秒变 Docker 镜像实现多环境部署
- 终端执行 java -jar example.jar 时报错:“没有主清单属性” 的解决
- 如何将本地JAR文件添加到Maven项目中
- Java 类隔离应用:多 Jar 包支持(java接口隔离原则)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)