• 第四次作业


    随着第三次作业的完成我又开始做第四次作业,依然是结对编程,一次次的作业让我对合作有了更重要的认识,话不多说开始工作。

    需求分析:输入0到10完成四则运算,用户输入一个数完成加减乘除,要求数随机生成......判断答题正确率

    代码部分

        import java.util.Stack;  
        
        public class Operate {      
            private Stack<Character> priStack = new Stack<Character>();      
            private Stack<Integer> numStack = new Stack<Integer>();;         
            public int caculate(String str) {      
                 
                String temp;
               
                StringBuffer tempNum = new StringBuffer();
                StringBuffer string = new StringBuffer().append(str);
              
                while (string.length() != 0) {      
                    temp = string.substring(0, 1);      
                    string.delete(0, 1);      
                   
                    if (!isNum(temp)) {      
                       
                        if (!"".equals(tempNum.toString())) {      
                           
                            int num = Integer.parseInt(tempNum.toString());      
                            numStack.push(num);  
                            tempNum.delete(0, tempNum.length());      
                        }      
                       
                        while (ompare(temp.charAt(0)) && (!priStack.empty())) {   
                            int a = (int) numStack.pop();
                            int b = (int) numStack.pop();
                            char ope = priStack.pop();      
                            int result = 0;    
                            switch (ope) {      
                            
                            case '+':      
                                result = b + a;      
                               
                                numStack.push(result);      
                                break;      
                            case '-':      
                                result = b - a;      
                                
                                numStack.push(result);      
                                break;      
                            case '*':      
                                result = b * a;      
                               
                                numStack.push(result);      
                                break;      
                            case '/':      
                                result = b / a;    
                                numStack.push(result);      
                                break;      
                            }      
              
                        }      
                              
                        if (temp.charAt(0) != '#') {      
                            priStack.push(new Character(temp.charAt(0)));      
                            if (temp.charAt(0) == ')') {      
                                priStack.pop();      
                                priStack.pop();      
                            }      
                        }      
                    } else      
                              
                        tempNum = tempNum.append(temp);      
                }      
                return numStack.pop();      
            }      
              
              
            private boolean isNum(String temp) {      
                return temp.matches("[0-9]");      
            }      
              
              
            private boolean compare(char str) {      
                if (priStack.empty()) {      
                         
                    return true;      
                }      
                char last = (char) priStack.lastElement();      
                      
                if (last == '(') {      
                    return true;      
                }      
                switch (str) {      
                case '#':      
                    return false;      
                case '(':      
                          
                    return true;      
                case ')':      
                         
                    return false;      
                case '*': {      
                         
                    if (last == '+' || last == '-')      
                        return true;      
                    else      
                        return false;      
                }      
                case '/': {      
                    if (last == '+' || last == '-')      
                        return true;      
                    else      
                        return false;      
                }      
                          
                case '+':      
                    return false;      
                case '-':      
                    return false;      
                }      
                return true;      
            }      
              
            public static void main(String args[]) {      
                Operate operate = new Operate();      
                int t = operate.caculate("(3+4*(4*10-10/2)#");        
                System.out.println(t);      
            }      
              
        }      
    

     我的编程小伙伴:lmxhappy   姓名:吕明霞  学号:1033 

    总结:代码很耗时,同时很费脑子,但是只要加紧练习不抱怨端正学习态度,就能学好。

  • 相关阅读:
    四则运算WEB版
    最大子数组问题
    四则运算终极版
    软件工程个人作业02
    软件工程概论-构建之法阅读笔记01
    软件工程概论个人作业01
    软件工程概论作业-测试
    123
    【好文转载】凡人修真传-程序员的十个等级
    有趣的网站
  • 原文地址:https://www.cnblogs.com/WANGDI1995/p/4907740.html
Copyright © 2020-2023  润新知