功能介绍
输入计算整数加减乘除的字符串。解析并计算,得到结果。
代码
/**
* 解析计算公式里面的括号。
*/
private static void bracketHandler(String input){
ArrayDeque<String> ad = new ArrayDeque<>();
String cal = "" ;
char[] chars = input.toCharArray();
for(char aChar : chars){
if(")".equals(""+aChar)){
String s = ad.pollLast();
while(!"(".equals(s)){
cal = s + cal ;
s = ad.pollLast();
}
ad.pollLast();
int calculate = calculate(cal);
ad.add(""+calculate);
}else{
ad.add(""+aChar);
}
}
System.out.println(ad.pollLast());
}
private static boolean contains(String cnt , String target){
return cnt.contains(target);
}
/**
* 计算括号里面的公式结果,并返回
*/
private static int calculate(String calculation){
char[] chars = calculation.toCharArray();
int rs = 0 ;
String temp = "" ;
char operator = '+' ;
for(char aChar : chars){
if(!contains("+-" , ""+aChar)){
temp += aChar ;
}else{
if('-' == operator){
rs -= Integer.parseInt(temp);
}else if('+' == operator){
rs += Integer.parseInt(temp);
}
operator = aChar ;
temp = "" ;
}
}
if('-' == operator){
rs -= Integer.parseInt(temp);
}else if('+' == operator){
rs += Integer.parseInt(temp);
}
return rs ;
}
}
思路整理
- 使用栈来找出括号里面的计算式子。
- 使用
+-
来识别出乘除的计算。