20172307 结对编程项目-四则运算 第一周 阶段总结
20172307 结对编程项目-四则运算 第一周 阶段总结
结对对象
- 学号:20172311
- 姓名:赵晓海
- 伙伴第一周博客地址:(http://www.cnblogs.com/zhaoxiaohai/p/8976043.html)
- 担任角色:(1)驾驶员:赵晓海
(2)副驾驶:黄宇瑭
需求分析
- 生成四则运算的题目,实现题目的分级和分个数。
- 实现中缀表达式转化成后缀表达式,并计算题目结果,同时与用户输录的答案进行比较。
- 运算题目中实现真分数的运算。
- 扩展需求:实现题目的去重。
设计思路
1.UML类图:
2.思路
- 生成一个生成题目的类,以字符串的形式输出。实现题目的分级,个数通过while,for循环来解决。
- 中缀转后缀参照老师的PPT,使用栈的方式来实现。
- 真分数的实现参照书本中的例题RationalNumber来实现。
- 题目的去重目前还没有思路。
相关过程截图
生成一个最简分数类的Fraction:
public class Fraction {
int numerator, denominator;
public Fraction() {
numerator= (int) (Math.random()*51);
denominator= (int) (Math.random()*51);
if(denominator==0)
denominator=1;
reduce();
}
public void reduce() {
if (numerator != 0) {
int common = gcd(Math.abs(numerator), denominator);
numerator = numerator / common;
denominator = denominator / common;
}
}
private int gcd(int num1, int num2) {
while (num1 != num2)
if (num1 > num2)
num1 = num1 - num2;
else
num2 = num2 - num1;
return num1;
}
public String getFraction()
{
String result;
if(numerator==0)
result="0";
else
if(denominator==1)
result=numerator+"";
else
result=numerator+"/"+denominator;
return result;
}
}
2.生成一个Create类来生成题目:
public class Create {
String[]Arraylist;
int num,rate;
public Create(int num ,int rate)
{
this.num=num;
this.rate=rate;
Arraylist=new String[num];
}
public String questionRate(int a)
{
String express="";
String[]OC={"+","-","×","÷"};
for (int c=0;c<a;c++) {
Fraction b = new Fraction();
String d=b.getFraction();
String e=OC[(int) (Math.random() * 4)];
while (d=="0"&&e=="÷") {
Fraction f=new Fraction();
d = f.getFraction();
}
express +=d+" "+e+ " ";
}
Fraction c=new Fraction();
String e=c.getFraction();
while (express.charAt(4*rate-1)=='÷'&&e=="0")
{
Fraction d=new Fraction();
e=d.getFraction();
}
express+=e+" "+"=";
return express;
}
public void QuestionNum(){
Create F=new Create(num,rate);
for(int a=0;a<num;a++)
Arraylist[a]=F.questionRate(rate);
}
public String[] getArraylist() {
return Arraylist;
}
public String getArraylist2(int a)
{
String b;
b=Arraylist[a];
return b;
}
public String toString() {
String a="";
for (int b=0;b<num;b++)
a+=Arraylist[b]+"\n";
return a;
}
}
3.CreatTest类的运行截图
遇到的困难及解决过程
- 在运行CreateTest时显示存放String类型的数组越界
提示错误处:
- 解决过程
和结对伙伴赵晓海同学连续看了好几遍但依然没有看出错误,最后在班主任王老师的指导下明白了问题出在我们在声明那个数组时,没有给他明确的大小,而是用了一个变量,导致数组大小只有1。
之前代码截图:
更改后代码截图:
对结对伙伴的评价
在这次结对活动中晓海同学是领航员的角色,代码的构想由他来完成,他出的力比我多的多。希望在后面几周的合作中我能帮到他更多吧。
PSP时间统计
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 70 |
Estimate | 估计这个任务需要多少时间 | 30 | 30 |
Development | 开发 | 600 | 700 |
Analysis | 需求分析 (包括学习新技术) | 120 | 180 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 30 | 20 |
Design UML | 设计项目UML类图 | 60 | 90 |
Coding | 具体编码 | 180 | 210 |
Code Review | 代码复审 | 180 | 120 |
Test | 测试(自我测试,修改代码,提交修改) | 120 | 120 |
Size Measurement | 计算工作量(实际时间 | 30 | 20 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | 60 |
合计 | 1440 | 1620 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥