ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

个人开发流程

2021-04-10 22:04:49  阅读:116  来源: 互联网

标签:formulaChar operatorStack 个人 10 int 流程 开发 calcStack push


主要代码:

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有