Java程序设计-表达式运算(个人博客)
1、团队课程设计博客链接
洪亚文博客链接:http://www.cnblogs.com/201521123065hyw/
郑晓丽博客链接:http://www.cnblogs.com/zxl3066/
2、个人负责模块或任务说明
负责模块:整个表达式的计算流程
3、自己的代码提交记录截图
for (int i = 0; i < array.length; i++) {
for(int k=i;array[k] >= '0' && array[k] <= '9';k++,i++) {
String tmpString = array[i]+"";
System.out.println(tmpString);
numberStr.add(tmpString);//不能强制转换为double,原本的number为double类型的,因此char型的array不能直接
//在前面加double强制转换
}
if (numberStr.size() > 0) {// 通过判断存放数值的数组大小间接判断是否为数字;
for (String string : numberStr) {
numberDou.add((double) Integer.parseInt(string));
}
for (int j = numberDou.size()-1; j >= 0; j--) {
num +=numberDou.get(j) * Math.pow(10,(numberDou.size() - j-1));//超出范围的错误,number.get(j)改为j-1
//System.out.println(num);
}
value.add(num);
numberStr = null;
numberDou = null;
if (mark == 1) {
num = Calculate(sign, value, sign.pop(), num);
mark = 0;
}else if (i == array.length) {
num = Calculate(sign, value, sign.pop(), value.remove(value.size()-1));
// ///计算结果出来了!!!!!!!
}
} else {
if (array[i] == 's') {
if (array[i + 1] == 'i' && array[i + 2] == 'n') {
i = i + 2;// 原本应该为+3,但是跳出循环后还有一个自增;
sign.push("sin");
mark = 1;
continue;
} else {
String s = "Wrong Expression";
System.out.println(s);
break;
}
} else if (array[i] == 'c') {
if (array[i + 1] == 'o' && array[i + 2] == 's') {
i = i + 2;// 原本应该为+3,但是跳出循环后还有一个自增;
sign.push("cos");
mark = 1;
continue;
} else {
String s = "Wrong Expression";
System.out.println(s);
break;
}
} else if (array[i] == '^') {
sign.push("^");
mark = 1;
continue;
} else if (array[i] == '(') {
sign.push("(");
} else if (array[i] == ')') {
if (array[i - 1] == '(') {
sign.pop();
if (mark == 1) {// 考虑^()情况,mark为1证明前一个是可直接计算的符号(sin,cos,^)
num = Calculate(sign, value, sign.pop(), value.remove(value.size()-1));
value.add(num);
continue;
}
continue;
}
num = Calculate(sign, value, sign.pop(), value.remove(value.size()-1));
value.add(num);// (90*(sin80+99)-66)/7
sign.pop();
} else if (array[i] == '+' || array[i] == '-'
|| array[i] == '*' || array[i] == '/') {
if (sign.empty()) {
sign.push(array[i] + "");
} else if (compare(array[i] + "", sign.peek()) == 1) {//
sign.push(array[i] + "");
} else {
num = Calculate(sign, value, sign.pop(), value.remove(value.size()-1));
value.add(num);
}
}
}
}
}
4、自己负责模块或任务详细说明
遇到数值时进数值栈,运算符则进行优先级比较,第一个运算符一定入栈,后来的与之前的比较,当前的优先级比较大时
入栈,当前的小于或等于前面的,弹出前一个运算符和两个操作数进行运算,然后再入栈。当遇到括号的时候,左括号入栈
遇右括号时,当前面一个符号栈栈顶不是左括号时继续往前计算,知道栈顶元素为左括号,弹出左括号。接着判断,若此时
栈还不为空,接着运算
5、课程设计感想
课程设计很锻炼人,应该在平时就多积累;
我们的代码功能还不够强大,有待改进
Java程序设计-表达式运算(个人博客)的更多相关文章
- 2016-2017-2 《Java程序设计》课程学生博客和代码托管链接
2016-2017-2 <Java程序设计>课程学生博客和代码托管链接 博客 1552 20155201 李卓雯 20155202 张 旭 20155203 杜可欣 20155204 王 ...
- 2015-2016-2 《Java程序设计》项目小组博客
2015-2016-2 <Java程序设计>项目小组博客 1451 完+美 java项目 守望先疯 JavaGroup 07_10_20_22 FromBottomToTop L.G.Su ...
- java课程设计-表达式运算(团队博客)
1 团队课程设计博客 1 团队名称.团队成员介绍 团队名称 奔跑吧土拨鼠 团队成员 洪亚文 201521123065 网络1513 郑晓丽 201521123066 网络1513 2 项目git地址 ...
- 2014-2015-2 《Java程序设计》课程学生博客列表
20135101 曹钰晶 20135103 王海宁 20135104 刘 帅 20135105 王雪铖 20135109 高艺桐 20135111 李光豫 20135114 王朝宪 20135116 ...
- JAVA爬虫挖取CSDN博客文章
开门见山,看看这个教程的主要任务,就去csdn博客,挖取技术文章,我以<第一行代码–安卓>的作者为例,将他在csdn发表的额博客信息都挖取出来.因为郭神是我在大学期间比较崇拜的对象之一.他 ...
- Java课程设计——计算器团队博客
1.团队名称.团队成员介绍(需要有照片) 1.1团队名称 707 1.2团队成员介绍 谢元将:组长 罗登宇:组员 王华俊:组员 2. 项目git地址 谢元将 罗登宇 王华俊 3. 项目git提交记录截 ...
- 微博爬虫“免登录”技巧详解及 Java 实现(业余草的博客)
一.微博一定要登录才能抓取? 目前,对于微博的爬虫,大部分是基于模拟微博账号登录的方式实现的,这种方式如果真的运营起来,实际上是一件非常头疼痛苦的事,你可能每天都过得提心吊胆,生怕新浪爸爸把你的那些账 ...
- docker简单入门之使用docker容器部署简单的java web开源项目jpress博客程序
一.在centos7.3上安装docker 前置条件 x86_64-bit 系统 kernel 3.10+ .检查内核版本,返回的值大于3.10即可 [root@node1 ~]# uname -r ...
- Java电话监听器【精品博客】
模拟拨打电话,接听电话,挂断电话,拨打为空号,等等,这些动作用Java接口监听的方式来完成,主要是为了训练使用接口监听回调: /** * 业务场景一: * [萍萍]--->请输入手机号码进行拨打 ...
随机推荐
- Confluence DotNet API发布
一.工程背景 公司所在的是工程检测行业,需要管理30个现场工程团队的检测报告,目前用的是Confluence知识管理系统,用于管理检测报告,未来可能还会基于检测报告做 自然语言分析处理. 百度百科是这 ...
- iOS蓝牙BLE开发
蓝牙是一个标准的无线通讯协议,具有设备成本低.传输距离近和功耗低等特点,被广泛的应用在多种场合.蓝牙一般分为传统蓝牙和BLE两种模式:传统蓝牙可以传输音频等较大数据量,距离近.功耗相对大:而BLE则用 ...
- ReactiveCocoa源码解读(一)
本着饮水思源的想法,面对ReactiveCocoa的强大功能,按捺不住心中的好奇心,于是走进其源码之中,一探ReactiveCocoa的魅力所在.虽然,耳闻其强大功能的核心是:信号,但一直不知道这个信 ...
- 神经网络与深度学习笔记 Chapter 2.
转载请注明出处http://www.cnblogs.com/zhangcaiwang/p/6886037.html 以前都没有正儿八经地看过英文类文档,神经网络方面又没啥基础,结果第一章就花费了我将近 ...
- 如何设计和实现一个web app
web app简介 web app其实不算是什么新鲜的东西,相比于传统的web和传统的app,web app这种web和app相结合的产物有的优点如下: 1. 开发上web app更有便捷性,ios开 ...
- win10 + Debian9.1双系统安装笔记
今天去163镜像上下载了"linuxmint-18.2-cinnamon-64bit.iso"和win10安装了双系统,感觉比在桌面方面十分不错,下面mark一下自己安装过程中的总 ...
- 【渗透课程】第四篇-Web安全之信息探测
Web之信息探测,从这篇开始就正式进入了Web渗透实战过程了,嗯,前面都是讲基础,下面我们来讲Web中的信息探测. 信息探测,主要的目的 收集目标服务器系统信息(IP,服务器所用系统等) 收集目标网站 ...
- 中了J.Fla的毒!
中了J.Fla的毒!中了J.Fla的毒!中了J.Fla的毒!中了J.Fla的毒!中了J.Fla的毒!中了J.Fla的毒!中了J.Fla的毒!中了J.Fla的毒!中了J.Fla的毒!中了J.Fla的毒! ...
- python注释方法以及编码问题
一.单行注释 在python中常使用"#"来进行单行注释,其快捷键为"ctrl+/",如果要对多行代码也就是代码块进行注释时,也可以选中多行按下 "c ...
- js学习--变量作用域和作用域链
作为一名菜鸟的我,每天学点的感觉还是不错的.今天学习闭包的过程中看到作用域与作用域链这两个概念,我觉得作为一名有追求的小白,有必要详细了解下. 变量的作用域 就js变量而言,有全局变量和局部变量.这里 ...