实现四则运算计算器的难点在于如何处理运算符与括号的优先级关系,这里准备将输入的算式当做字符串处处理,自定义方法Analytic(String s)解析这个字符串并得出结果。
1.Analytic(String s)方法
public String Analytic(String s){
try {
//对于括号的处理
if (s.contains("(")) {
int x=0;
int a = s.indexOf("(");
int b =-1;
for(int i = a+1;i<s.length();i++){
if(s.charAt(i) == '('){
x++;
}
if(s.charAt(i) == ')'){
Log.d("zhan","i = "+i);
if (x == 0){
b = i;
break;
}else {
x--;
}
}
}
String s1 = s.substring(0, a);
String s2 = s.substring(b + 1, s.length());
String s3 = Analytic(s.substring(a + 1, b));
String s4 = s1 + s3 + s2;
return Analytic(s4);
} else if (s.lastIndexOf("+") != -