网站首页 > 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计算题怎么算)
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- 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)
本文暂时没有评论,来添加一个吧(●'◡'●)