第四次作业
2015-10-24 21:42 向日葵luck 阅读(151) 评论(1) 收藏 举报随着第三次作业的完成我又开始做第四次作业,依然是结对编程,一次次的作业让我对合作有了更重要的认识,话不多说开始工作。
需求分析:输入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
总结:代码很耗时,同时很费脑子,但是只要加紧练习不抱怨端正学习态度,就能学好。
浙公网安备 33010602011771号