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. SQL进阶语法的多表操作

    AS别名 多张表联合操作,如果表多,字段名长,不方便阅读.这里我们可以使用  as  关键字来对字段名设置别名. as也可以省略,看个人喜好,在这里我还是支持把 as 写上,这样我们在面对复杂的SQL ...

  2. LaTeX表格绘制备忘之Go语言中的几个表

      以下绘制的表格选自<Go语言 云动力>一书.这些表格比较简单,LaTeX语句也比较简单.   完整代码: % 博客园陆巍的博客 https://www.cnblogs.com/atth ...

  3. 【转】Netty 拆包粘包和服务启动流程分析

    原文:https://www.cnblogs.com/itdragon/archive/2018/01/29/8365694.html Netty 拆包粘包和服务启动流程分析 通过本章学习,笔者希望你 ...

  4. webBrowser.Document.Cookie取不到HttpOnly的Cookie,取Cookie不完整

    在做数据采集时,有些网站需要输入验证码,但各网站验证码都不同,不可能有完美的识别验证码的代码,所以我也没去研究,我所采取的方案是:在winform里通过WebBrowser调用网页先手动登录系统,然后 ...

  5. 20155307刘浩《网络对抗》逆向及Bof基础

    20155307刘浩<网络对抗>逆向及Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会回显任何用户输 ...

  6. mysql是否区分大小写

    1.是否区分 库名.表名.列名.别名 的大小写? ------------------------------------------------------------------ [ Linux] ...

  7. JavaScript总结(八)

    表单验证 表单验证是JavaScript最常用.最有用的功能之一.在表单内容提交之前进行验证,可以降低服务器处理器的压力,缩短用户等待的时间.表单校验中第一个要考虑的问题是:什么时候捕获表单的录入错误 ...

  8. Oracle中实现dblink的作法

    基本环境: 机器1: 192.168.56.102  用作dblink的使用者(create database link 语句在此执行) 机器2: 192.168.56.103  用作dblink的源 ...

  9. 从OEL5中启动简单的dns服务

    在OEL5中,有一个 dnsmasq,可以适合小型的实验性的dns设置. 如果可以看到类似如下的内容,说明dnsmasq已经设置好了. [root@dnssvr ~]# rpm -qa dnsmasq ...

  10. PyQt5在QWidget窗体中显示Qwidget的自定义类(补:完美解决)

    [概览] 1.显示原生Qwidget 1)不使用布局(绝对定位) 2)使用布局 2.显示Qwidget的自定义类 1)不使用布局(绝对定位)       2)使用布局 [知识点] 1.显示原生Qwid ...