第一次结对作业

211606368林书浩 211606352陈彬

一、预估与实际

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划
• Estimate • 估计这个任务需要多少时间 35 40
Development 开发
• Analysis • 需求分析 (包括学习新技术) 35 40
• Design Spec • 生成设计文档 30 40
• Design Review • 设计复审 50 45
• Coding Standard • 代码规范 (为目前的开发制定合适的规范) 30 35
• Design • 具体设计 40 50
• Coding • 具体编码 800 900
• Code Review • 代码复审 100 110
• Test • 测试(自我测试,修改代码,提交修改) 100 100
Reporting 报告 20 20
• Test Repor • 测试报告 10 10
• Size Measurement • 计算工作量 10 10
• Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划 5 5
合计 1405

二、需求分析

我通过上网查阅资料的方式了解到,小学三年级数学有如下的几个特点:

  • 四则运算
  • 同优先级从左往右顺序运算,高优先级先运算

三、设计

1. 设计思路

  • 四则运算的生成
  • 输出到out.txt

2. 实现方案

  • 使用逆波兰函数
  • 正则表达式

四、编码

// 比较两个运算符的优先级
private static int cmpOper(String op1, String op2) {
if (op1.equals("+") || op1.equals("-")) {
if (op2.equals("+") || op2.equals("-")) {
return 0;
} else {
// if (op2.equals("") || op2.equals("/")) {}
return -1;
}
}else{
// if (op1.equals("
") || op1.equals("/"))
if (op2.equals("+") || op2.equals("-")) {
return 1;
} else {
// if (op2.equals("*") || op2.equals("/")) {
return 0;
}
}
}

// 判断字符串是否为数字
private static boolean isNumber(String s) {
try {
Integer.parseInt(s);
} catch (NumberFormatException e) {
return false;
}
return true;
}

1. 调试日志

出现除零异常,发生原因可能是因为没有考虑分母为零的情况
输出结果为空值,发生原因可能是因为在用栈的时候没有安排好顺序

2. 关键代码

// 比较两个运算符的优先级
private static int cmpOper(String op1, String op2) {
if (op1.equals("+") || op1.equals("-")) {
if (op2.equals("+") || op2.equals("-")) {
return 0;
} else {
// if (op2.equals("") || op2.equals("/")) {}
return -1;
}
}else{
// if (op1.equals("
") || op1.equals("/"))
if (op2.equals("+") || op2.equals("-")) {
return 1;
} else {
// if (op2.equals("*") || op2.equals("/")) {
return 0;
}
}
}

// 判断字符串是否为数字
private static boolean isNumber(String s) {
try {
Integer.parseInt(s);
} catch (NumberFormatException e) {
return false;
}
return true;
}

3. 代码规范

请给出本次实验使用的代码规范:

  • 1.再循环语句与判断语句后应该用缩进4格
  • 2.注意缩写规范,避免忘文不知义
  • 3.不允许任何未经预先定义的常量直接出现在代码中
  • 4.左大括号前不换行,左大括号后换行,右大括号前换行,右大括号后还有东西这不换行,表示终止的右大括号后必须换行。.

五、测试

    • gread10 -n 3
    • n 10 -gread 3
  • 没有输入前面的-n和-gread
  • 只输入一个数据
  • 极大的数值
  • 负数
  • 字母

六、总结

设计思路没有想好后面写代码的时候非常吃力

posted @ 2018-09-19 00:00  林书浩  阅读(150)  评论(1编辑  收藏  举报