20172325『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结

结对伙伴

  • 学号:20172306
  • 姓名:刘辰
  • 结对伙伴博客链接
  • 刘辰同学对编程的积极程度很高,并且在编程能力上很不错,有自己的想法并且能够把这个想法具体的实践出来,只是在编程的过程中和同学交流不够,总是在最后不行了才发现问题,很容易造成前功尽弃,希望在编程过程中多沟通,减少不必要的时间精力的浪费。

小组结对编程照片

项目中自己负责的部分

我负责的是两个部分,分别是:

  • 1、利用栈将中缀表达式转后缀表达式;
  • 2、对后缀表达式进行计算。

个人贡献度划分

我认为我们的贡献度划分是“ 50% :50% ” ;我们有两个成员,然后任务分配也比较容易,必做部分有四个,我们一人两个部分,因为每一个部分的完成都需要投入时间和精力,所以我认为没有难易之分,五五开。

相关过程的截图

- 分等级的题目的生成

- 能够实现真分数

- 后缀表达式的计算

关键代码解释

  • 后缀表达式的计算
    package 结对项目;
/*
* 后缀表达式的计算 作者:邓煜坤,刘辰
*
* 邓煜坤负责的部分
*/ import java.util.Stack;
import java.util.StringTokenizer;
import java.util.Scanner; public class HZ { /*
*由于我们的Test文件还没编好,各部分还没有联系起来,所以我先在这里把四个符号做出了声明
*/ private final char ADD = '+';
private final char SUBTRACT = '-';
private final char MULTIPLY = '*';
private final char DIVIDE = '/'; private Stack<Integer> stack; /*
* 初始化一个空栈,用来存储表达式
*/
public HZ (){
stack = new Stack<Integer>();
} /*
* 此处用来判断指定的char是否为操作符。
* 如果是运算符,布尔值为真
*/
private boolean isOperator(String str) { return (str.equals("+") || str.equals("-") || str.equals("*") || str
.equals("/"));
} /*
* 下面是具体的计算过程
*/
private int calculateSingleOp(char operator, int num1, int num2) { int result = 0;
switch (operator)
{
case ADD:
result = num1 + num2;
break;
case SUBTRACT:
result = num1 - num2;
break;
case MULTIPLY:
result = num1 * num2;
break;
case DIVIDE:
result = num1 / num2;
break;
} return result;
} /*
*下面是计算指定的后缀表达式。
*(1).如果遇到操作数,将其推送到栈上。
*(2).如果遇到操作符,则弹出两个操作数以供运算符计算。
*(3).将计算结果推到栈上。
*字符串表示后缀表达式。
*/
public int evaluate (String str) { int num1, num2, result = 0;
// 指定特定的字符分隔符为空格。
String token = "";
StringTokenizer tokenizer = new StringTokenizer(str); while (tokenizer.hasMoreTokens()) {
// 每一个字符都来自于字符串。
token = tokenizer.nextToken(); if (isOperator(token)) {
num2 = (stack.pop()).intValue();
num1 = (stack.pop()).intValue();
result = calculateSingleOp(token.charAt(0), num1, num2);
// 将计算结果推到栈上
stack.push(new Integer(result));
} else {
stack.push(new Integer(Integer.parseInt(token)));
}
}
return result;
} public static void main(String[] args) {
String expression = "";
String again = "";
int result = 0; try {
@SuppressWarnings("resource")
Scanner input = new Scanner(System.in);
do {
HZ evaluator = new HZ();
// 读取一个有效的后缀表达式。即用户输入有效后缀表达式,之后在Test文件里将参数构建过来就好了。
System.out
.println("Please enter a valid postfix expression : "); expression = input.nextLine(); result = evaluator.evaluate(expression);
System.out.println();
System.out
.println("After evaluating, the calculated result is : "
+ result); // 重复操作
System.out.println("Do you want to test again? [Y/N]");
again = input.nextLine();
System.out.println();
} while (again.equalsIgnoreCase("Y"));
} catch (Exception IOException) {
System.out.println("Input exception reported.");
}
}
}

20172325『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结的更多相关文章

  1. 20172311『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结

    20172311『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结 结对伙伴 学号 :20172307 姓名 :黄宇瑭 伙伴第一周博客地址 对结对伙伴的评价:黄宇瑭同学的优势在于能够想出一 ...

  2. 20172313『Java程序设计』课程结对编程练习_四则运算第二周阶段总结

    20172313『Java程序设计』课程结对编程练习_四则运算第二周阶段总结 结对伙伴 20172326康皓越 博客地址(http://www.cnblogs.com/326477465-a/p/90 ...

  3. 20172321『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结

    20172321『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结 结对伙伴 学号 :20172324 姓名 :曾程 伙伴第一周博客地址: 对结对伙伴的评价:一个很优秀的同学,在这次项目中 ...

  4. 20172326『Java程序设计』课程结对编程练习_四则运算第二周阶段总结

    20172326『Java程序设计』课程结对编程练习_四则运算第二周阶段总结 小组成员 20172313 余坤澎 20172332 于欣月 20172326 康皓越 小组编程照片 设计思路 通过一个E ...

  5. 20172332『Java程序设计』课程结对编程练习_四则运算第二周阶段总结

    20172313『Java程序设计』课程结对编程练习_四则运算第二周阶段总结 小组成员 20172326康皓越 20172313余坤澎 20172332于欣月 小组编程照片 设计思路 设计一个生成符号 ...

  6. 20172302『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结

    一.结对对象 姓名:周亚杰 学号:20172302 担任角色:驾驶员(周亚杰) 伙伴第二周博客地址 二.本周内容 (一)继续编写上周未完成代码 1.本周继续编写代码,使代码支持分数类计算 2.相关过程 ...

  7. 20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结

    20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结 结对伙伴 学号 :20172307 姓名 :黄宇瑭 伙伴第一周博客地址: http://www.cnblogs.com/ ...

  8. 2017-2018-2 1723 『Java程序设计』课程 结对编程练习_四则运算 第二周

    一.结对对象 姓名:侯泽洋 学号:20172308 担任角色:驾驶员(侯泽洋) 伙伴第二周博客地址 二.本周内容 (一)继续编写上周未完成代码 1.本周继续编写代码,使代码支持分数类计算 2.相关过程 ...

  9. 20172325『Java程序设计』课程 结对编程练习_四则运算第三周阶段总结

    20172325『Java程序设计』课程 结对编程练习_四则运算第三周阶段总结 结对伙伴 学号:20172306 姓名:刘辰 在这次项目的完成过程中刘辰同学付出了很多,在代码的实践上完成的很出色,在技 ...

随机推荐

  1. MAC mojave版本系统 破解软件

    MAC mojave版本系统 破解软件 1 :Adobe Photoshop CC 2019.0.1 Mac中文破解版 2 :Office 2019 16.19 Mac中文破解版 3 :Paralle ...

  2. 关于安装时无法重启rabbitmq服务

    如图重启时找不到rabbitmq, 解决办法: rabbitmqctl stop :停止rabbitmq  rabbitmq-server restart : 重启rabbitmq 这两步就可以完成重 ...

  3. GoLand(三)数据类型、变量和常量

    Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.数据类型 数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存, ...

  4. [转]超级强大的SVG SMIL animation动画详解

    超级强大的SVG SMIL animation动画详解 本文花费精力惊人,具有先驱前瞻性,转载规则以及申明见文末,当心予以追究.本文地址:http://www.zhangxinxu.com/wordp ...

  5. 20155236范晨歌 Exp7 网络欺诈技术防范

    20155236范晨歌 Exp7 网络欺诈技术防范 虚拟机经常崩= =,所以基本上做一个实验换一个... 遇到了一个简单的小问题老师帮忙解决了:虚拟机没联网... 一.基础问题回答 通常在什么场景下容 ...

  6. 4 伪ajax:jsonp、cors 跨域请求

    一.同源策略 https://www.cnblogs.com/yuanchenqi/articles/7638956.html 同源策略(Same origin policy)是一种约定,它是浏览器最 ...

  7. ELK批量删除索引

    一.存在问题 用了一段时间elk发现如果索引长时间不删除,elk会越来越慢,重启elasticsearch服务器节点之前同步时间也会很长 二.解决方法(定期删除索引) 1.在elasticsearch ...

  8. C++ STL 学习笔记__(7)Set和multiset容器

    10.2.8 Set和multiset容器 set/multiset的简介 ²  set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列.元素插入过程是按排序规则插入,所以不能指 ...

  9. idea中xml打开方式变成file,改回来

    原文:https://blog.csdn.net/u012903926/article/details/80682885 创建了一个test文件,用的是普通text打开方式,然后你修改文件为test. ...

  10. CSS3设置背景图片的大小

    设置背景图片的大小,以长度值或百分比显示,还可以通过cover和contain来对图片进行伸缩. background-size 语法详解: 要在插入图片之后进行设置背景图片的大小 backgroun ...