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

一.结对对象

  • 姓名:周亚杰
  • 学号:20172302
  • 担任角色:驾驶员(周亚杰)
  • 伙伴第二周博客地址

二.本周内容

(一)继续编写上周未完成代码

1.本周继续编写代码,使代码支持分数类计算
2.相关过程截图
a.下图是上周编写的生成题目的类,不能运行。
1320922-20180508213721493-658448253.png
下图是本周更新的代码,可以支持分数的产生,红色框内为主要更改区域
1320922-20180508214535712-1571092462.png

b.下图是代码中题目转后缀表达式的部分代码及运行结果截图
1320922-20180508215725397-1812073378.png

c.下图是代码中后缀表达式计算结果的部分代码及运行结果截图
1320922-20180508220110617-1106051706.png

3.关键代码解释
在题目中生成真分数及包含真分数的题目转换为后缀表达式

  • 生成真分数:这里我们让产生的随机数含有复数,举例,我们产生-4~9之间的随机数,如果产生随机数为负数,就将一个随机产生的真分数赋给一个String型的figure,如果产生的随机数为0~9,则将此随机数转换为String型的赋给figure,这样就完成了真分数的生成在题目中。
  • 含真分数的题目转后缀表达式:我们调用StringTokenizer类中的方法,将上面的题目转换为StringTokenizer类的一个对象,然后使用nextToken()方法,将其分为String的字符串,然后判断字符串的长度,如果字符串长度大于1,就将字符串直接输出,然后下面就是字符串为1的,包括整数和操作符,这个在上周已经解决,包括入栈出栈,都已解决。
  • 后缀表达式求值:正在编写中:将所有的数都转换为分数,然后调用之前编写类中的分数的加减乘除方法,然后完成求值,正在编写中。

(二)遇到的困难及解决方法

(三)全部代码

第一部分:生成题目 //负责人:侯泽洋

import java.util.Stack;
import java.util.Random;
import java.util.ArrayList;
import java.util.Scanner;class Questions {ArrayList<Object> array = new ArrayList<Object>();Random generator = new Random();char[] newchar = {'+', '-', '*', '/'};protected int number;int NUM;public Questions() {number = 0;}public Object getQuestion(int num) {int num1 = num;while (num > 0) {int figure = (int) generator.nextInt(9) + 1;array.add(figure);number = (int) (Math.random() * 4);array.add(newchar[number]);num--;}String obj = "";while (num < 2 * num1) {obj += array.get(num);num++;}int other = (int) generator.nextInt(9) + 1;array.add(other);obj += other + "=";return obj;}
}

第二部分:题目运算 //负责人:周亚杰,侯泽洋

//生成后缀表达式public class Calculations {public static void main(String[] args) {Questions questions=new Questions();Stack stack = new Stack();Scanner Scan=new Scanner(System.in);char c;int count=0,answer;char[] operation = new char[100];String str = (String) questions.getQuestion(3);System.out.println("请回答以下问题:\n"+str);System.out.println("请输入你的答案:");answer=Scan.nextInt();for (int i = 0; i < str.length(); i++) {c = str.charAt(i);if (c >= '0' && c <= '9') {operation[i] = c;count++;}else {if (c == '*' || c == '/') {if (stack.empty()) {stack.push((char) c);} else if ((char) stack.peek() == '*' || (char) stack.peek() == '/') {operation[i] = (char) stack.pop();stack.push(c);} elsestack.push(c);} else if (c == '+' || c == '-') {if (stack.empty()) {stack.push(c);} else if ((char) stack.peek() == '+' || (char) stack.peek() == '-') {operation[i] = (char) stack.pop();stack.push(c);} else {operation[i] = (char) stack.pop();stack.push(c);}} elsestack.push(c);}}int num = stack.size();for (int a = 0; a < num; a++) {operation[str.length() + a] = (char) stack.pop();}
//后缀表达式计算    //负责人:周亚杰Stack<Integer> stack1 = new Stack<Integer>();int m, n, sum,num1=str.length()+(str.length()-count);for (int b = 0; b <= num1; b++) {if (operation[b] >= '0' && operation[b] <= '9')stack1.push((int) operation[b]-48);else {if (operation[b] == '+') {m =  stack1.pop();n =  stack1.pop();sum = n + m;stack1.push(sum);} else if (operation[b] == '-') {m = stack1.pop();n = stack1.pop();sum = n- m;stack1.push(sum);} else if (operation[b] == '*') {m = stack1.pop();n = stack1.pop();sum = n * m;stack1.push(sum);} else if (operation[b] == '/') {m =  stack1.pop();n =  stack1.pop();sum = n / m;stack1.push(sum);}else if (operation[b] == ' ')continue;}}if ((int)stack1.peek()==answer)System.out.println("恭喜你答对了!");elseSystem.out.println("很遗憾,答错了!答案是:"+stack1.peek());
}
}

三.贡献度划分

侯泽洋:50%
周亚杰:50%

四.结对照片

1333190-20180512223823027-233501197.png

五.评价及感想

本周完成的力度并不是很大,感觉和其他小组有些差距,这个周末要多抽时间追上其他小组进度,下周二完成整个项目的编写。

转载于:https://www.cnblogs.com/hzy0628/p/9011379.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353702.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MFC标签页控件的使用

随笔- 11 文章- 0 评论- 3 MFC标签页控件的使用 1、在对话框中添加一个标签页控件&#xff0c;并为此控件关联一个CTabCtrl类变量m_tabctrl. 2、创建若干个对话框资源作为标签页控件的标签。 修改两个属性&#xff1a; Border: none // 边界为空&#xff0c;这样它就没…

实践中的弹性基础架构

几周前&#xff0c;我获得了一个难得的机会&#xff0c;可以在基础设施领域弄脏双手。 在JVM内部的深入了解下&#xff0c;我每天的工作经历发生了有趣的变化&#xff0c;我想与您分享动机和成果。 希望它可以启发类似的问题类别。 背景 我将从解释需要解决方案的上下文开始。…

struct和typedef struct

struct和typedef struct 分三块来讲述&#xff1a;   1 首先&#xff1a;//注意在C和C里不同     在C中定义一个结构体类型要用typedef:     typedef struct Student     {     int a;     }Stu;     于是在声明变量的时候就可&#xff1a;Stu stu1;…

notepad++插件实现json、xml格式化

notepad比较出色的免费的数据编辑、格式化工具。。。 现在json、xml文件很流行、格式化也是必须的&#xff0c;方便查看关键信息&#xff01; 01、下载notepad及相关插件 npp_7.5.5-x86&#xff1a; https://files.cnblogs.com/files/xiaochina/npp_7.5.5-x86.zip npp-json:…

ActiveMQ 5.x中的消息持久性

我被问了很多关于ActiveMQ如何存储消息&#xff08;或在某些情况下不存储&#xff09;的基本知识。 这是它的高级解释。 注意&#xff0c;上下文在JMS中。 如果您使用ActiveMQ的非JMS客户端&#xff08;即STOMP&#xff0c;AMQP&#xff0c;MQTT等&#xff09;&#xff0c;则在…

5.报错:ImportError: No module named win32api

pip install pypiwin32即可 转载于:https://www.cnblogs.com/caimuqing/p/9016190.html

bind1st bind2nd的使用

bind1st bind2nd的使用 Posted on 2010-07-16 09:14 wanpengcoder 阅读(1882) 评论(0) 编辑 收藏 bind1st和bind2nd函数用于将一个二元算子&#xff08;binary functor&#xff0c;bf&#xff09;转换成一元算子&#xff08;unary functor&#xff0c;uf&#xff09;。为了达到…

一个select元素自定义设计的新思路:appearance: none之后利用符号制造小箭头

最近工作时解决了一个前端小问题&#xff08;如下图所示&#xff09;&#xff1a;在Safari中&#xff0c;select的控件之上有不和谐的灰色部分。 刚开始时我以为是backgrand或是border设置不当之类产生的问题&#xff0c;在搜索了很久之后终于找到了问题所在&#xff1a;这个灰…

调整HashMap的大小:未来的危险

最近&#xff0c;我偶然发现了一个错误&#xff0c;该错误是由于多个线程对java.util.HashMap的使用不当引起的。 该错误是抽象泄漏的一个很好的例子。 只有了解数据结构的实现级别详细信息&#xff0c;才能帮助我解决当前的问题。 因此&#xff0c;我希望分享我所面临的问题将…

别的程序员是怎么读你的简历的

别的程序员是怎么读你的简历的 2009年11月9日 陈皓 下面这个图片来源国外&#xff0c;是一个关于程序员面试时的简历&#xff0c;被人事部门和程序员本身评审的角度不同的图片。当然&#xff0c;这是一个从国外面试的视角制作的图片&#xff0c;不过&#xff0c;可以看出&#…

漫谈C++重载运算符

漫谈C重载运算符 1.前置运算符和后置运算符&#xff0c;左值和右值 其实很久以来一直都没有怎么搞清楚左值和右值的区别&#xff0c;只知道左值可以放在等号的左边&#xff0c;也可以放在等号的右边&#xff0c;但是右值却只能放在等号的右边&#xff0c;然后形成一个大概直观…

Zabbix linux agent 安装

系统&#xff1a;Linux Centos 7.3 x64 服务&#xff1a;Zabbix_agent 3.0.16 一.安装Zabbix_agent 服务 1.安装zabbix 3.0 yum源 rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm 2.安装Zabbix_agent yum install zabbix-agen…

io和nio的缓冲_IO与NIO –中断,超时和缓冲区

io和nio的缓冲假设有一个系统有时需要将文件复制到几个位置&#xff0c;但是这种方式在响应能力至关重要的情况下。 换句话说&#xff0c;如果由于某种原因文件系统过载&#xff0c;而我们无法在不到一秒钟的时间内写入文件&#xff0c;它应该放弃。 ExecutorService是一项非常…

直接在apk中添加资源的研究

原文 http://blog.votzone.com/2018/05/12/apk-merge.html 之前接手过一个sdk的开发工作&#xff0c;在开发过程中有一个很重要的点就是尽量使用代码来创建控件&#xff0c;资源文件最好放到assets目录下&#xff0c;如果必须使用res资源&#xff0c;需要通过 getResources().g…

强制类型转换简介

强制类型转换简介 强制类型转换当操作数的类型不同&#xff0c;而且不属于基本数据类型时&#xff0c;经常需要强制类型转换&#xff0c;将操作数转化为所需要的类型。强制类型转换具有两种形式&#xff0c;称为显式强制转换和隐式强制类型转换。强制类型转换不改变原来数据的类…

JavaFX实际应用程序:SkedPal

“真实世界的应用程序”系列中的一个新条目。 这次是SkedPal &#xff0c;这是一个用于智能管理忙人生活的应用程序。 我一直在咨询SkedPal团队有关JavaFX的事宜&#xff0c;并且在他们决定开始使用我的CalendarFX框架来满足他们的日历要求时&#xff0c;我也在咨询他们。 在下…

url 特殊字符 传递参数解决方法

url 特殊字符 传递参数解决方法 有些符号在URL中是不能直接传递的&#xff0c;如果要在URL中传递这些特殊符号&#xff0c;那么就要使用他们的编码了。下表中列出了一些URL特殊符号及编码。十六进制值 1. URL 中号表示空格 %2B 2. 空格 URL中的空格可以用号或者编码 %20 3.…

chromium之histogram.h

histogram不知道是干啥的 // Histogram is an object that aggregates statistics, and can summarize them in // various forms, including ASCII graphical, HTML, and numerically (as a // vector of numbers corresponding to each of the aggregating buckets). google翻…

Java中的功能性FizzBu​​zz Kata

不久前&#xff0c;我使用Java 8流和lambda解决了FizzBu​​zz kata问题。 尽管最终结果是可行的&#xff0c;但中间步骤却没有。 我当然可以做得更好。 与往常一样&#xff0c;让我们​​从失败的测试开始&#xff1a; package remonsinnema.blog.fizzbuzz;import static or…

axis2 wsdl2java 使用方式

axis2 wsdl2java 使用方式(2011-04-15 22:41:43) 说明见&#xff1a;http://hi.baidu.com/aotori/blog/item/ee98efcdc6cc300301e92814.html 用wsdl2java简化客户端的编写 也许有很多读者会说“有没有搞错啊&#xff0c;只调用两个WebService方法用要写这么多代码&#xff0c;…