结对编程练习_四则运算(第一周)
参考资料
需求分析
-
实现一个命令行程序,要求:
- 自动生成小学四则运算题目(加、减、乘、除)
- 支持整数
- 支持多运算符(比如生成包含100个运算符的题目)
- 支持真分数
- 统计正确率
-
扩展需求,文件:
- 处理生成题目并输出到文件
- 完成题目后从文件读入并判题
- 多语言支持:简体中文, 繁體中文, English
- 生成题目去重
设计思路
1.明确设计目的--自动生成小学四则运算题目(加、减、乘、除)
2.将问题逐一解决,eg:如何生成随机数
3.完善条件--支持整数、多运算符、真分数、统计正确率
4.编译运行并测试
代码及注释
import java.util.Scanner;
public class szys2906 {
public static void main(String[] args)
{
int answer;//answer代表答题者的回答
int count=0;//count代表题目数量
int key=0;//key代表计算机计算出来的答案
int right=0;//right代表回答正确的题目数量
System.out.println("题目数量:");
Scanner input=new Scanner(System.in );
count=input.nextInt();
szys2906 question=new szys2906();
for(int n=0;n<count;n++)//注意n从0开始!
{
int i=(int)(Math.random()*100);
int j=(int)(Math.random()*100);
switch((int)(Math.random()*4))
{
case 0://加法
System.out.println(i+"+"+j+"=");
key=i+j;
break;
case 1://减法
if(i<j)
{
int temp=i;
i=j;
j=temp;
}
System.out.println(i+"-"+j+"=");
key=i-j;
break;
case 2://乘法
System.out.println(i+"*"+j+"=");
key=i*j;
break;
case 3://除法
while(j==0)
j= (int)(Math.random()*100);//分母若为0,则重新取随机数
System.out.println(i+"/"+j+"=");
key=i/j;
break;
}
Scanner reply=new Scanner(System.in );
answer=reply.nextInt();
if(answer==key){
System.out.println("回答正确!");
right++;
}
else{
System.out.println("回答错误!");
}
}
float rate=(float)right/(float)count;
System.out.println("正确率为"+rate);
}
}
运行过程截图
代码托管地址
UML图:
遇到的困难及解决方法
- 遇到的问题:正确率出现了1.5的错误情况
- 解决方法:将
for(n=0;n<=count;n++)
改成了for(n=0;n<count;n++)
- 本次实验扩展需求中“多语言支持:简体中文, 繁體中文, English”“生成题目去重”没有实现,希望以后能解决。
对结对的小伙伴做出评价(重点指出需要改进的地方)
我的结对小伙伴是小夏同学,在结对编程中,我们互相帮助,互相学习,在各方面都得到了提高。我总是很粗心,但是我的结对伙伴却足够细心,能够帮助我并指出很多问题。结对编程在增强我合作意识的同时,也使我更加自立。我们最需要改进的地方就是时间观念不强,完成任务拖拖拉拉,总是在周日截止时间前上演生死时速的戏码,以后要打好提前量,争取早些完成任务,留出总结反思的时间。
PSP
PSP2.1 | Personal Software Process Stages | 预估耗时(小时) | 实际耗时(小时) |
---|---|---|---|
Planning | 计划 | 2.0 | 1.5 |
Estimate | 估计这个任务需要多少时间 | 16.5 | 17.5 |
Analysis | 需求分析 (包括学习新技术) | 2.0 | 1.5 |
Design Spec | 生成设计文档 | 1.0 | 1.5 |
Design Review | 设计复审 (和同事审核设计文档) | 1.0 | 0.5 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 1.5 | 2.0 |
Design | 具体设计 | 1.0 | 1.5 |
Coding | 具体编码 | 2.0 | 3.0 |
Code Review | 代码复审 | 0.5 | 0.5 |
Test | 测试(自我测试,修改代码,提交修改) | 1 | 1 |
Reporting | 报告 | 1.5 | 2.0 |
Test Report | 测试报告 | 0.5 | 0.5 |
Size Measurement | 计算工作量 | 0.5 | 0.5 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 2.0 | 1.0 |