java程序设计-算术表达式的运算
1、团队课程设计博客链接
洪亚文博客链接:http://www.cnblogs.com/201521123065hyw/
郑晓丽博客链接:http://www.cnblogs.com/zxl3066/
2、个人负责模块或任务说明
负责模块:运算符号的优先级比较,测试各种情况,以及计算各种运算符的结果函数;
3、自己的代码提交记录截图
private static double Calculate(ArrayList<Double> value, String c,
double num) {// 三角函数的计算(包括平方立方根)
// TODO Auto-generated method stub
// 如果遇到左括号,则直接返回当前数,例如(5)
if (c.equals("(")) {
return num;
}
if (c.equals("sin")) {
return Math.sin(num * Math.PI / 180);
} else if (c.equals("cos")) {
return Math.cos(num * Math.PI / 180);
} else if (c.equals("^")) {
return Math.pow(value.remove(value.size() - 1), num);
} else if (c.equals("+")) {
return num + value.remove(value.size() - 1);
} else if (c.equals("-")) {
return value.remove(value.size() - 1) - num;
} else if (c.equals("*")) {
return value.remove(value.size() - 1) * num;
} else
return value.remove(value.size() - 1) / num;
}
private static int compare(String a, String b) {// 值为1入栈
// TODO Auto-generated method stub
if (a.equals(b) || (a.equals("+") && b.equals("-"))
|| (a.equals("-") && b.equals("+"))
|| (a.equals("*") && b.equals("/"))
|| (a.equals("/") && b.equals("*"))) {
return 0;
} else if (b.equals("(")) {
return 1;
} else if ((a.equals("*") || a.equals("/") && !b.equals("("))) {
return 1;
} else if ((a.equals("*") || a.equals("/"))
&& (b.equals("+") || b.equals("-"))) {
return 1;
} else if (a.equals("^")
&& (b.equals("+") || b.equals("-") || b.equals("*") || b
.equals("/"))) {
return 1;
} else {
return 0;
}
}


4、自己负责模块或任务详细说明
计算函数:加减乘除还有幂方直接进行栈顶和当前数值的计算;三角函数则只需要将符号和一个数值弹出并计算。
比较函数:同级之间的运算符直接进行计算,因此返回0;
左括号一定入栈;
符号栈中左括号出现在乘除要将符号入栈,返回1。
5、课程设计感想
1、需要考虑的情况太多,还要分别考虑三角函数与平方立方的运算符
2、Math函数的原因导致后面结果会出现**.99999999这样的情况,需要格式化;
3、还有欠缺考虑的是三角函数后面紧跟括号的情况,会继续改进。
java程序设计-算术表达式的运算的更多相关文章
- java实现算术表达式求值
需要根据配置的表达式(例如:5+12*(3+5)/7.0)计算出相应的结果,因此使用java中的栈利用后缀表达式的方式实现该工具类. 后缀表达式就是将操作符放在操作数的后面展示的方式,例如:3+2 后 ...
- [Java]将算术表达式(中序表达式Infix)转成后续表达式Postfix
Inlet类: package com.hy; import java.io.BufferedReader; import java.io.IOException; import java.io.In ...
- [Java]分解算术表达式二
源码: package com.hy; import java.io.BufferedReader; import java.io.IOException; import java.io.InputS ...
- [Java]分解算术表达式一
源码: package com.hy; import java.io.BufferedReader; import java.io.IOException; import java.io.InputS ...
- Linux - Shell - 算术表达式 - 算数运算
概述 shell 中基于 $(()) 的 算数运算 背景 复习 shell 脚本 凑数吧 准备 环境 os centos7 1. 算数运算 代码 #!/bin/bash # $(()) 的数学运算, ...
- 利用栈实现算术表达式求值(Java语言描述)
利用栈实现算术表达式求值(Java语言描述) 算术表达式求值是栈的典型应用,自己写栈,实现Java栈算术表达式求值,涉及栈,编译原理方面的知识.声明:部分代码参考自茫茫大海的专栏. 链栈的实现: pa ...
- K:双栈法求算术表达式的值
相关介绍: 该算法用于求得一个字符串形式的表达式的结果.例如,计算1+1+(3-1)*3-(21-20)/2所得的表达式的值,该算法利用了两个栈来计算表达式的值,为此,称为双栈法,其实现简单且易于理 ...
- [Java]算术表达式求值之二(中序表达式转后序表达式方案,支持小数)
Inlet类,入口类,这个类的主要用途是验证用户输入的算术表达式: package com.hy; import java.io.BufferedReader; import java.io.IOEx ...
- [Java]算术表达式求值之一(中序表达式转后序表达式方案)
第二版请见:https://www.cnblogs.com/xiandedanteng/p/11451359.html 入口类,这个类的主要用途是粗筛用户输入的算术表达式: package com.h ...
随机推荐
- JavaScript获取和创建元素
1.JavaScript中获取元素 常用的获取document中元素的方法: 1) document.getElementById() =>通过元素ID获取文档中特定的元素,如获取 id = ...
- CSS中设置height:100%无效的解决方案
在网页设计中有时会设置某个DIV或者TABLE的高度自适应,即元素的高度充满父元素的高度.一般使用设置CSS height:100%来实现.但是当元素层级嵌套比较深的时候,设置该属性并不能得到应有的 ...
- MBProgressHUD1.0.0源码解析
MBProgressHUD是一个显示提示窗口的三方库,常用于用户交互.后台耗时操作等的提示.通过显示一个提示框,通知用户操作或任务的执行状态:同时,利用动画效果,降低用户等待的焦虑心理,增强用户体验. ...
- IOS开发中多线程的使用
一.创建多线程的五种方式 1.开启线程的方法一 NSThread * thread=[[NSThread alloc] initWithTarget:self selector:@selector(_ ...
- APP应用测试技巧
分页数据 测试分页数据,必须要满足一页数据,根据APP设置的分页数据准备一些测试数据. 满足一页数据的时候上下滑动瀑布流时, 页面数据是否会正常展示: 是否会出现第二页请求不到数据: 是否会出现重复加 ...
- spring boot 登录注册 demo (三) -- 前后端传递
前端页面通过thymeleaf渲染 <dependency> <groupId>org.springframework.boot</groupId> <art ...
- 【BZOJ3262】陌上花开 (CDQ分治+树状数组+排序)
Time Limit: 3000 ms Memory Limit: 256 MB Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),用三个整数表示. 现要对每 ...
- Dynamics 365中部分账号使用系统明显缓慢怎么办?先这么干!
摘要: 本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复263或者20170828可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyon ...
- chrome保持元素hover,active状态
审查元素,选中需要hover的标签 点击"Styles"菜单中的":hov",弹出 Force element state 选中相应的 :hover :acti ...
- js读取cookie、设置cookie
//-----------------------------直接调用函数就可以了------------------------------ setCookie("test",& ...