在进行一个表达式的计算时,先将表达式分割成数字和字符串然后利用出入栈将分割后的表达式进行中缀转后缀,再将后缀表达式进行计算得到结果(思想在上一篇写过)现在贴下Java语言的代码实现。(学习Java时间不长所以可能会有很多不足的地方,我会改进也欢迎大神可以给我一些意见和建议~谢谢啦)
我将这部分分成三个方法完成功能,并在getResult方法调用(getResult方法被主方法调用)
private String getResult(String str) {
//分割
String[] Str = segment(str);
//中缀转后缀
String newStr = infToSuf(Str);
//后缀计算
String result = sufToRes(newStr);
return sufToRes(result);
}
1.字符串分割,为避免在TextView上显示带空格删除时不方便而且显示屏就那么大占地方,录入时的字符串中没有空格然后就手动分割了
private static String[] segment(String str) {
String[] exp = new String[str.length()+1];
//找最近的索引并截取字符串
int l = str.length();
for(int i = 0;i < l+1;i++) {
int index;
int[] ind = new int[6];
ind[0] = str.indexOf('+');
ind[1] = str.indexOf('-');
ind[2] = str.indexOf('*');
ind[3] = str.indexOf('/');
ind[4] = str.indexOf('(');
ind[5] = str.indexOf(')');
if(ind[1] == 0) {
Arrays.sort(ind);
int t;
for(t = 0;t <6;t++) {
if(ind[t] >= 0)
break;
}
int r = ind[t+1];
exp[i] = str.substring(0,r);
i++;
exp[i] = str.substring(r,r+1);
str = str.substring(r+1);
}else if(((ind[1]-ind[4]) == 1) && (ind[4]=