随着第三次作业的完成我又开始做第四次作业,依然是结对编程,一次次的作业让我对合作有了更重要的认识,话不多说开始工作。
需求分析:输入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
总结:代码很耗时,同时很费脑子,但是只要加紧练习不抱怨端正学习态度,就能学好。