开源-用解释器模式解析一个算式

发表在    java 09-02 17:29:27

3 2101 1

该程序使用方式:让用户输入一个算式,例如"1/3+2*5/2+12*(5+4)/3",然后输出结果。

这玩意看起来挺简单的,如果使用脚本引擎也就是几行代码的事。但是如果我们要自己解析这个算式还是有些麻烦的。关键是有大量的字符串处理工作,下面是我写的代码(核心部分)

//本段代码用于处理无括号的算式
private static String deal(String str, int index) {
		String res = str.substring(0);
		int fir =index-1;
		int la = index+1;
		for(;fir>=0;fir--){
			if(isAM(res.charAt(fir))){
				fir++;
				break;
			}
		}
		for(;la<res.length();la++){
			if(isAM(res.charAt(la))){
				break;
			}
		}
		String F="";
		if(fir>0){
			F = res.substring(0, fir);
		}else{
			fir=0;
		}
		String M="";
		if(la<res.length()){
			M = done(res.substring(fir,la));
		}else{
			M = done(res.substring(fir));
		}
		String L="";
		if(la<res.length()){
			L = res.substring(la);
		}
		return F+M+L;
	}

下面是源码:百度网盘 密码:om2q