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程序设计-算术表达式的运算的更多相关文章

  1. java实现算术表达式求值

    需要根据配置的表达式(例如:5+12*(3+5)/7.0)计算出相应的结果,因此使用java中的栈利用后缀表达式的方式实现该工具类. 后缀表达式就是将操作符放在操作数的后面展示的方式,例如:3+2 后 ...

  2. [Java]将算术表达式(中序表达式Infix)转成后续表达式Postfix

    Inlet类: package com.hy; import java.io.BufferedReader; import java.io.IOException; import java.io.In ...

  3. [Java]分解算术表达式二

    源码: package com.hy; import java.io.BufferedReader; import java.io.IOException; import java.io.InputS ...

  4. [Java]分解算术表达式一

    源码: package com.hy; import java.io.BufferedReader; import java.io.IOException; import java.io.InputS ...

  5. Linux - Shell - 算术表达式 - 算数运算

    概述 shell 中基于 $(()) 的 算数运算 背景 复习 shell 脚本 凑数吧 准备 环境 os centos7 1. 算数运算 代码 #!/bin/bash # $(()) 的数学运算, ...

  6. 利用栈实现算术表达式求值(Java语言描述)

    利用栈实现算术表达式求值(Java语言描述) 算术表达式求值是栈的典型应用,自己写栈,实现Java栈算术表达式求值,涉及栈,编译原理方面的知识.声明:部分代码参考自茫茫大海的专栏. 链栈的实现: pa ...

  7. K:双栈法求算术表达式的值

    相关介绍:  该算法用于求得一个字符串形式的表达式的结果.例如,计算1+1+(3-1)*3-(21-20)/2所得的表达式的值,该算法利用了两个栈来计算表达式的值,为此,称为双栈法,其实现简单且易于理 ...

  8. [Java]算术表达式求值之二(中序表达式转后序表达式方案,支持小数)

    Inlet类,入口类,这个类的主要用途是验证用户输入的算术表达式: package com.hy; import java.io.BufferedReader; import java.io.IOEx ...

  9. [Java]算术表达式求值之一(中序表达式转后序表达式方案)

    第二版请见:https://www.cnblogs.com/xiandedanteng/p/11451359.html 入口类,这个类的主要用途是粗筛用户输入的算术表达式: package com.h ...

随机推荐

  1. Java入门——(8)网络编程

      关键词:IP地址..端口.UDP.DatagramPacket类.DatagramSocket类.TCP.ServerSocket类.Socket类.文件上传     一.基本概念         ...

  2. mysql flush操作

    FLUSH语法 FLUSH [LOCAL | NO_WRITE_TO_BINLOG] flush_option [, flush_option] ... 如果您想要清除MySQL使用的部分内部缓存,您 ...

  3. 理解LGWR,Log File Sync Waits以及Commit的性能问题[转]

    理解LGWR,Log File Sync Waits以及Commit的性能问题 一.概要: 1.  Commit和log filesync的工作机制 2.  为什么log file wait太久 3. ...

  4. s​q​l​ ​s​e​r​v​e​r​ ​2​0​0​0​登​录​名​与​数​据​库​用​户​名​的​关​联​问​题

    MS SQL Server 2000 数据库使用备份还原造成的孤立用户和对象名‘xxx’无效的错误的解决办法     在使用数据库的过程中,经常会遇到数据库迁移或者数据迁移的问题,或者有突然的数据库损 ...

  5. SQL查询操作及子句优先级

    用source .sql文件竟然可以自动建表. 简单数据查询: select * from table_name; 避免重复查询: select distinct(field_name) from t ...

  6. .net core 2.0学习笔记(五):程序配置&ConfigurationManager

    配置组件是.net framework中非常常用的功能.在创建.net framework 工程时,系统不仅会自动生成app.config文件,而且还提供了非常强大的访问类库.但是这些好东西,在.ne ...

  7. 自定义EasyUI的datetimebox控件日期时间的显示格式(转)

    工作中遇到的问题,在此记录一下. 需求:前台页面使用了EasyUI框架,在某一个html页面中要求datetimebox显示格式为年月日和小时,如图所示: 尝试过两种方法,分别如下: 第一种方法: d ...

  8. 震惊!WIN2003存在后门大全,提权成功率高

     从某种意义上说,服务器被攻击是不可避免的,甚至被控制也情有可原.但绝对不能容忍的是,服务器被植入后门,攻击者如入无人之境,而管理者去浑然不觉.本文将对当前比较流行的后门技术进行解析,知己知彼方能杜绝 ...

  9. Dom-创建标签

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. Mysql 掌握要点

    1. 引擎 InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION):二是采用了行级锁. 行级锁和表级锁本来就有许多不同之处,另外,事务的引入也带来了一些新问题. 1.1 I ...