PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | ||
? Estimate | ? 估计这个任务需要多少时间 | 5 | 5 |
Development | 开发 | ||
? Analysis | ? 需求分析 (包括学习新技术) | 120 | 200 |
? Design Spec | ? 生成设计文档 | 30 | 30 |
? Design Review | ? 设计复审 | 40 | 80 |
? Coding Standard | ? 代码规范 (为目前的开发制定合适的规范) | 80 | 110 |
? Design | ? 具体设计 | 50 | 80 |
? Coding | ? 具体编码 | 400 | 900 |
? Code Review | ? 代码复审 | 100 | 150 |
? Test | ? 测试(自我测试,修改代码,提交修改) | 120 | 200 |
Reporting | 报告 | 30 | 50 |
? Test Repor | ? 测试报告 | 30 | 80 |
? Size Measurement | ? 计算工作量 | 20 | 40 |
? Postmortem & Process Improvement Plan | ? 事后总结, 并提出过程改进计划 | 30 | 60 |
合计 | 1980 |
我通过百度的方式了解到,小学三年级数学有如下的几个特点:
经过分析,我认为,这个程序应当:
写出具体实现的步骤
比如:
记录编码调试的日志,请记录下开发过程中的 debug 历程:
无法正确判断+-/()的优先级,以至于在后面无法正确把逆波兰式子算出结果;原因是自己在优先级判断的boolean judge(String str1, String str2没有正确将比较完的Boolean值传回ReversePolishNotation()方法中,后来添加了int Judge(String str)并且运用swtich()方法可以正确返回+-/()各个符号的优先级。
// 将中缀表达式转转化为逆波兰表达式
public void ReversePolishNotation() {
for (String str : list) {
if (str.matches("[0-9]+")) {
RPOlist.add(str);
}else if (str.matches("[\\+\\-\\×\\÷\\(\\)]")) {
stack(str);
}else {
System.out.println("非法表达式!");
}
}
while(!stack1.isEmpty()) {
RPOlist.add(stack1.pop());
}
}
// 创建一个用于存放字符的方法,将“+-×÷()”放进stack1中
public void stack(String zf) {
if (stack1.isEmpty()) { // 若为空栈,将字符存入栈中
stack1.push(zf);
return ;
}/*if ("(".equals(zf)){ // 判断字符是否为为“(”
stack1.push(zf);
return ;
}if (")".equals(zf)) { // 判断字符是否为为“)”
String string = "";
while(!"(".equals(string = stack1.pop())) {
RPOlist.add(string);
}return ;
}if ("(".equals(stack1.peek())) { // 若当前栈顶的元素为“(”,则直接入栈
stack1.push(zf);
return ;
}*/if (judge(zf,stack1.peek())) {// 判断优先级,若预存的字符优先级大于栈顶元素,将此字符存入栈中
stack1.push(zf);
return ;
}else{ // 若优先级低于栈顶元素,则将字符存入存逆波兰式子的数组中
RPOlist.add(stack1.pop());
stack(zf);
}
}
// 创建一个方法用来判断当前字符与栈顶元素的优先级,返回true或false
private boolean judge(String str1, String str2) {
return Judge(str1) > Judge(str2);
}
private int Judge(String str) {
switch(str) {
case "(" :return 3;
case "×" :
case "÷" :return 2;
case "+" :
case "-" :return 1;
case ")" :return 0;
default:return -1;
}
}
// 创建一个用来计算逆波兰式子结果的方法
public int count(String s1,String s2,String s3) {
int a = Integer.parseInt(s2);
int b = Integer.parseInt(s1);
switch(s3) {
case "+":
return a+b;
case "-":
return a-b;
case "×":
return a*b;
case "÷":
return a/b;
default :
return 0;
}
}
public int count() {
for (String str:RPOlist) {
if (str.matches("[0-9]+")) {
stack2.push(str);
}else {
stack2.push(String.valueOf(count(stack2.pop(),stack2.pop(),str)));
}
}
return Integer.parseInt(stack2.pop());
}
此段代码用于将随机产生的中缀算式式子转换为后缀形式(逆波兰),以便于计算。
第一条:方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵循驼峰形式:
public class mathExam {}
第二条:类名使用UpperCamelCase风格:
public class mathExam {}
第三条:左小括号和字符之间不出现空格;同样的,右小括号和字符之间也不出现空格:
if(stringArray.length > 2)
第四条 :
单行字符数限制不超过120个
第五条:任何二目、三木运算符的左右两边都需要加一个空格。
if(e == 2)
第六条:注释的双斜线与注释内容之间有且仅有一个空格。
// 单个参数输入则默认为一年级只需判断输入的数字是否异常
第七条: if/for/while/switch/do等保留字与括号之间都必须加空格。
if(e == 2)
第八条:左大括号后换行。
if(rd==1) {
System.setOut(ps);
System.out.println("("+i+")"+" "+b+" "+"+"+" "+c+" "+"=");
d=b+c;list.add("("+i+")"+" "+b+" "+"+"+" "+c+" "+"="+" "+d);
}
输入 | 预期结果 | 实际结果 | 是否符合预期 |
---|---|---|---|
(一二年级的看个人作业1) | |||
5 3 | 输出5道三年级数学题 | 正确运行 | 是 |
10 3 | 输出10道三年级数学题 | 正确运行 | 是 |
原文:https://www.cnblogs.com/qq772197793/p/9672111.html