当前位置: 首页 > news >正文

泗县网站建设乐天seo视频教程

泗县网站建设,乐天seo视频教程,独立站制作公司,网站建设情况的报告20175310结对编程项目-四则运算 阶段总结博客 结对小组组员:20175310 20175317 一、题目要求 实现一个命令行程序,要求: 自动生成小学四则运算题目(加、减、乘、除) 支持整数 支持多运算符(比如生成包含100个运算符的题目&#xf…

20175310结对编程项目-四则运算 阶段总结博客

结对小组组员:20175310 20175317

一、题目要求

实现一个命令行程序,要求:

  • 自动生成小学四则运算题目(加、减、乘、除)
    ·支持整数
    ·支持多运算符(比如生成包含100个运算符的题目)
    ·支持真分数
  • 统计正确率
  • 第一周要求输出整数/多运算符(题目生成/题目运算判题)

二、需求分析

根据题目要求,这个项目需要达到的内容主要为以下几个方面:
1、自动生成表达式(包含多运算符,随机数为整数)
2、计算自动生成的表达式的结果
3、判断用户输入的答案是否和正确答案相符
4、计算正确率

三、设计思路

1、自动生成表达式(包含多运算符,随机数为整数)

①表达式的产生:

random产生随机数,这次实验一共要生成两个随机数,一个是随机数a,表示运算符个数,那么表达式中数字有a+1个;另一个是在类fuhao中的随机数m(取值范围1~4),表示+-*÷四则运算。下面是生成随机数a的程序:

Random random=new Random();   //生成随机数
int a = random.nextInt(5)+1;   //生成1到5之间的随机数a,表示运算符个数

②表达式的输出:

在j循环中,用System.out.print(b); 将生成的随机数b输出,由于运算符比运算数少一个,所以输出运算符时要加一个判断:

if (j <= a) {fuhao k = new fuhao();  //声明类fuhao的对象kchar q = k.yunsuanfu();   //产生一个运算符qSystem.out.print(q);     //将生成的随机符号输出Question = Question + b +q;  //将生成的随机数和随机符号存入Question中}
else{Question = Question + b;    //将生成的随机数存入Question中}

③表达式的读取:

由于上面的表达式是一个数字一个运算符独立输出的,因此在系统看来表达式并不是一个整体。通过字符串拼接的方式将生成的随机数和运算符读取到字符串Question中:

String Question = new String("");   //系统随机生成的表达式
for (int j=1;j<=a+1;j++) {int b = random.nextInt(10) ;   //生成0到9之间的随机数b,表示表达式中出现的随机数,共a+1个System.out.print(b);   //将生成的随机数输出if (j <= a) {fuhao k = new fuhao();  //声明类fuhao的对象kchar q = k.yunsuanfu();   //产生一个运算符qSystem.out.print(q);     //将生成的随机符号输出Question = Question + b +q;  //将生成的随机数和随机符号存入Question中}else{Question = Question + b;    //将生成的随机数存入Question中}}

2、计算自动生成的表达式的结果

第一步已经将系统生成的表达式存入Question中,因此问题转换为已知表达式求值。这个问题和我上周做的实验一实现四则运算十分类似,我就讲上周的代码进行了一些修改,并在程序中重新声明了一个名为sizeyunsuan的类,代码如下:

class sizeyunsuan{static Stack<Character> op = new Stack<>();//计算后缀式的值public static float calrp(String rp){//参数rp:后缀式Stack<Float> v = new Stack<>();char[] arr = rp.toCharArray();int len = arr.length;for(int i = 0; i < len; i++){Character ch = arr[i];// 如果是操作数,则推到堆栈if(ch >= '0' && ch <= '9') v.push(Float.valueOf(ch - '0'));// 如果是运算符,则计算结果// 在堆栈中有前2个操作数的情况下,将结果推送到堆栈中else v.push(getv(ch, v.pop(), v.pop()));}return v.pop();//返回值return:表达式结果}//将中缀式转换为后缀式public static String getrp(String s){//参数s:中缀形式的字符串char[] arr = s.toCharArray();int len = arr.length;String out = "";for(int i = 0; i < len; i++){   //从左到右扫描中缀式char ch = arr[i];if(ch == ' ') continue;if(ch >= '0' && ch <= '9') {// 如果是操作数,则直接输出out+=ch;continue;}if(ch == '+' || ch == '-'){//如果遇到“+”或“-”,则从堆栈中弹出运算符,直到遇到“(”,然后输出,并进栈。while(!op.empty() && (op.peek() != '('))out+=op.pop();op.push(ch);continue;}if(ch == '*' || ch == '÷'){//如果是“*”或“÷”,则退栈并输出,直到优先级较低或“(”将运算符进栈while(!op.empty() && (op.peek() == '*' || op.peek() == '÷'))out+=op.pop();op.push(ch);continue;}if(ch == '(') op.push(ch);//如果遇到“(”,则直接进栈if(ch == ')'){ //如果遇到“)”一直退栈输出,直到退到“(”,弹出“(”while(!op.empty() && op.peek() != '(')out += op.pop();op.pop();continue;}}while(!op.empty()) out += op.pop();return out;//返回值return:后缀形式的字符串}public static Float getv(char op, Float f1, Float f2){if(op == '+') return f2 + f1;else if(op == '-') return f2 - f1;else if(op  == '*') return f2 * f1;else if(op == '÷') return f2 / f1;else return Float.valueOf(-0);}
}

这一部分的设计思路和问题及解决方案在2018-2019-2 20175310实验一《Java开发环境的熟悉》实验报告中有详细的描述。

3、判断用户输入的答案是否和正确答案相符

在第二步中我们已经得到了表达式的正确结果right,所以这一步只需要比较用户输入的答案answer和正确答案right是否一致。

Scanner reader2=new Scanner(System.in);
double answer = reader2.nextDouble();     //读取用户输入的答案
if (answer==right){System.out.println("回答正确!");count++;
}
else{System.out.println("回答错误!正确答案是:"+right);
}

4、计算正确率

在第三步比较answerright答案是否一致的同时,如果相等,count++count初值为0)。当循环结束之后,正确题数count/总题数x就是正确率lv

float lv=count*100/x;     //正确率
System.out.println("测试结束!正确率为:"+lv+"%");

四、UML类图

1591555-20190401205617694-2113668228.png

五、运行过程截图

1591555-20190401194224897-735319316.png

六、代码托管地址

https://gitee.com/xicyannn/20175310xcy/blob/master/src/%E7%BB%93%E5%AF%B9/%E5%9B%9B%E5%88%99%E8%BF%90%E7%AE%97/yunsuan.java
本次任务的完整代码在码云结对/四则运算文件夹中。

七、遇到的困难及解决方法

本次实验遇到的问题和解决方案都在 三、设计思路中有详细的说明。

八、对结对的小伙伴做出评价

我结对的小伙伴是钟睿文,这次的任务主要是由我来写,他来提供思路和指出问题。这次配合还是很顺利的,我在编写代码的过程中出现了很多问题,也有许多没有达到题目要求的地方,钟睿文同学都及时提醒我,并提供了合适的思路。

九、PSP

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划
· Estimate· 估计这个任务需要多少时间2030
Development开发
· Analysis· 需求分析 (包括学习新技术)3045
· Design Spec· 生成设计文档3030
· Design Review· 设计复审 (和同事审核设计文档)2030
· Coding Standard· 代码规范 (为目前的开发制定合适的规范)3040
· Design· 具体设计6090
· Coding· 具体编码120150
· Code Review· 代码复审3045
· Test· 测试(自我测试,修改代码,提交修改)3050
Reporting报告
· Size Measurement· 计算工作量1020
· Postmortem & Process Improvement Plan· 事后总结, 并提出过程改进计划1520
合计395550

转载于:https://www.cnblogs.com/xicyannn/p/10634482.html

http://www.wooajung.com/news/33915.html

相关文章:

  • 中建集团seo+网站排名
  • 深圳罗湖区网站搜狗搜索推广
  • 杭州网站开发建设云搜索下载
  • 做网站需要工商执照吗优化搜索引擎营销
  • 惠州seo招聘seo引擎优化工具
  • 网站做营销推广的公司产品推广思路
  • 企业网站网站建设电话营销型企业网站诊断
  • 贵州网站建设公司有哪些seo推广是什么意怿
  • 禹城网站制作东莞网络营销网站建设
  • 网站建设哪些公司万网域名注册查询
  • 汕头政府网站建设报个计算机培训班多少钱
  • 丹阳网站建设多少钱北京百度总部
  • 百度网站分析工具百度一下首页网址
  • 网站建设解析汕头疫情最新消息
  • 小型公司网站建设知乎跨境电商关键词工具
  • 网站建设学生选课系统aso搜索排名优化
  • 济南哪家公司做网站好企业培训公司
  • 网络培训投诉平台重庆网站排名优化教程
  • 进服务器编辑网站怎么做中国舆情在线
  • 什么平台可以免费推广产品电商seo搜索优化
  • 昆明的房产网站建设重庆网站seo技术
  • 武汉专业做网站公司教育培训机构营销方案
  • 跟犀牛云一样做网站的无锡网站服务公司
  • 晋江网站建设报价电商营销的策略与方法
  • 做投资网站企业宣传ppt
  • 网站建设的商业目的网页设计首页
  • 企业网站建设实验感想图片外链
  • o2o网站建设报价百度输入法
  • 人力资源管理师杭州seo网站优化
  • 运城做网站费用高吗seo优化关键词是什么意思