个人开发流程
作者:互联网
主要代码:
package chapter; import java.util.ArrayList; import java.util.List; import java.util.Stack; public class Master { private static String[] op = { "+", "-", "*", "/" }; public static List<String> returnUserInNum(int a){ List<String> ac=new ArrayList(); int i=1; while(i<=a){ String question=MakeFormula(); ac.add(question); i++; } return ac; } //算式 public static String MakeFormula(){ StringBuilder build = new StringBuilder(); int count = (int) (Math.random() * 2) + 1; // 生成1-3之间的随机整数(不包括3) int start = 0; int number1 = (int) (Math.random() * 99) + 1;//生成1-100之间的随机整数(不包括100) build.append(number1); while (start <= count){ int operation = (int) (Math.random() * 3); //生成0-3之间的随机整数(不包括3) int number2 = (int) (Math.random() * 99) + 1;//生成1-100之间的随机整数(不包括100) build.append(op[operation]).append(number2); start ++; } return build.toString(); } public static String Solve(String formula){ Stack<String> tempStack = new Stack<>(); Stack<Character> operatorStack = new Stack<>(); int len = formula.length(); int k = 0; for(int j = -1; j < len - 1; j++){ char formulaChar = formula.charAt(j + 1); if(j == len - 2 || formulaChar == '+' || formulaChar == '-' || formulaChar == '/' || formulaChar == '*') { if (j == len - 2) { tempStack.push(formula.substring(k)); } else { if(k < j){ tempStack.push(formula.substring(k, j + 1)); } if(operatorStack.empty()){ operatorStack.push(formulaChar); }else{ char stackChar = operatorStack.peek(); if ((stackChar == '+' || stackChar == '-') && (formulaChar == '*' || formulaChar == '/')){ operatorStack.push(formulaChar); }else { tempStack.push(operatorStack.pop().toString()); operatorStack.push(formulaChar); } } } k = j + 2; } } while (!operatorStack.empty()){ tempStack.push(operatorStack.pop().toString()); } Stack<String> calcStack = new Stack<>(); for(String peekChar : tempStack){ if(!peekChar.equals("+") && !peekChar.equals("-") && !peekChar.equals("/") && !peekChar.equals("*")) { calcStack.push(peekChar); }else{ int a1 = 0; int b1 = 0; if(!calcStack.empty()){ b1 = Integer.parseInt(calcStack.pop()); } if(!calcStack.empty()){ a1 = Integer.parseInt(calcStack.pop()); } switch (peekChar) { case "+": calcStack.push(String.valueOf(a1 + b1)); break; case "-": calcStack.push(String.valueOf(a1 - b1)); break; case "*": calcStack.push(String.valueOf(a1 * b1)); break; default: calcStack.push(String.valueOf(a1 / b1)); break; } } } return formula + "=" + calcStack.pop(); } }
测试代码:
package chapter; import java.util.List; import java.util.Scanner; import org.junit.Assert; import org.junit.Test; public class TestCase { @Test public void solve() { String sum = Master.Solve("9+10"); Assert.assertEquals("9+10=19", sum); } @Test public void test1(){ Assert.assertEquals("4+5=9",DoSum.sum(4,5)); } @Test public void test2() { System.out.println("请输入算式个数"); Scanner scanner=new Scanner(System.in); List<String> strings = Master.returnUserInNum(scanner.nextInt()); int size=strings.size(); for(int i=0;i<size;i++){ String ret = Master.Solve(strings.get(i)); System.out.println(ret); } } }
测试结果:
psp展示
PSP2.1 | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 10 | 9 |
· Estimate | ·大致工作步骤 | 10 | 12 |
Development | 开发 | 300 | 354 |
· Analysis | 需求分析 (包括学习新技术) | 10 | 6 |
· Design Spec | · 生成设计文档 | 10 | 15 |
· Design Review | · 设计复审 (和同事审核设计文档) | 5 | 10 |
· Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 10 | 20 |
· Design | 具体设计 | 20 | 25 |
· Coding | 具体编码 | 250 | 290 |
· Code Review | · 代码复审 | 120 | 130 |
· Test | · 测试(自我测试,修改代码,提交修改) | 50 | 55 |
个人总结:编写代码时有好多代码英文记不全,还有一些对方法的应用不太熟练,需要同学帮助、提醒,才能理解。希望以后能多写、多练,熟能生巧,熟练掌握老师教的知识。
标签:formulaChar,operatorStack,个人,10,int,流程,开发,calcStack,push 来源: https://www.cnblogs.com/masaipeng/p/14642173.html