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. MarkDown入门指南

    标题 标题是每篇文章必备而且最常用的格式. 在Markdown中,如果想将一段文字定义为标题,只需要在这段文字前面加上 #,再在 # 后加一个空格即可.还可增加二.三.四.五.六级标题,总共六级,只需 ...

  2. 【Leetcode】Shortest Palindrome

    Shortest Palindrome Given a string S, you are allowed to convert it to a palindrome by adding charac ...

  3. ubuntu下动态链接库小计

    只记录下具体操作代码,以后再做补充 1,gcc -Wall -fPIC -c test4.c 2,gcc -g -shared -Wl,-soname,libtests.so -o libtests. ...

  4. IOS开发中多线程的使用

    一.创建多线程的五种方式 1.开启线程的方法一 NSThread * thread=[[NSThread alloc] initWithTarget:self selector:@selector(_ ...

  5. rtems在mini2440上的移植(ubuntu)

    第一步 建立编译环境,rtems的编译环境需要使用newlib的库,所以ubuntu自带的gcc是不可以的,我是参照下面的博客才编译成功的,之前走了好多弯路. http://blog.sina.com ...

  6. 关于curl / curl_multi的一些实验

    几天没写了,主要都是自己的学习过程,贴一下curl / curl_multi_exec的一些代码,mark一下. <?php /** * Created by PhpStorm. * User: ...

  7. Centos7.2 编译安装方式搭建 phpMyAdmin

    1. 下载 编译 安装 pcre tar zxvf pcre-8.41.tar.gz cd pcre-8.41 ./configure --prefix=/opt/local/pcre-8.41 ma ...

  8. IT科技企业逻辑思维面试题

    逻辑思维面试题 一.假设有一个池塘,里面有无穷多的水.现有2个空水壶,容积分别为5升和6升.问题是如何只用这2个水壶从池塘里取得3升的水.[请描述操作过程] 答:(1)先用容积为6升的水壶装满水: ( ...

  9. Sql Server数据库使用触发器和sqlbulkcopy大批量数据插入更新

    需要了解的知识 1.触发器 2.sqlbulkcopy 我的用途 开发数据库同步的工具,需要大批量数据插入和数据更新. 方式 使用SqlBulkCopy类对数据进行数据批量复制,将需要同步数据的表新建 ...

  10. Hibernate级联操作解密(inverse和cascade)

    总结: Cascade:对级联操作进行限制,有如下几个参数: all : 所有情况下均进行关联操作.  none:所有情况下均不进行关联操作.这是默认值.  save-update:在执行save/u ...