接上一节的java 定义的栈
直接上代码
public class teStact {
public static void test1() {
MyStack<String> ops = new MyStack<String>();
MyStack<Double> vals = new MyStack<Double>();
String operationStr = "(1+(2*(3+5)))";
for(int i=0;i<operationStr.length();i++) {
String s = operationStr.substring(i, i+1);
if(s.equals("(")){}
else if(s.equals("+")) {ops.push(s);}
else if(s.equals("-")) {ops.push(s);}
else if(s.equals("*")) {ops.push(s);}
else if(s.equals("/")) {ops.push(s);}
else if(s.equals("s")) {ops.push(s);}
else if(s.equals(")")){
String op = ops.pop();
Double v = vals.pop();
if(op.equals("+")) {v = vals.pop() + v;}
else if(op.equals("-")) {v = vals.pop() - v;}
else if(op.equals("*")) {v = vals.pop() * v;}
else if(op.equals("/")) {v = vals.pop() / v;}
else if(op.equals("s")) {
v = Math.sqrt(v);
}
System.out.println(v);
vals.push(v);
}else {
vals.push(Double.valueOf(s));
}
}
}
public static void main(String[] args) {
test1();
}
}
测试数据是:(1+(2*(3+5)))
((1+s(4))/2)
由于我每次读取一个字符,所以不能输入带小数点数据