67,550
社区成员




public static void main(String[] args) throws IOException {
String s="(add (sub (div 8 2) (mul 1 9)) 20)";
// for (String s1 : s.split("\\(")) {
// System.out.println(s1);
// }
System.out.println(operation(s));
}
public static String operation(String str){
if (str.indexOf("(",1)==-1){
String[] split = str.split("\\s+");
String ope = split[0].replace("(","");
int c1 = Integer.parseInt(split[1].replace(")",""));
int c2 = Integer.parseInt(split[2].replace(")",""));
int result=-1;
if ("div".equals(ope)&&c2==0){
return "error";
}
switch (ope){
case "div":
result=c1/c2;
break;
case "add":
result=c1+c2;
break;
case "mul":
result=c1*c2;
break;
case "sub":
result=c1-c2;
break;
}
return String.valueOf(result);
}
int left=str.lastIndexOf("("),right=str.indexOf(")",left);
String substring = str.substring(left, right+1);
String result = " "+operation(substring);
StringBuilder sb = new StringBuilder(str);
sb.replace(left,right+1,result.replace(")",""));
return operation(sb.toString());
}