java版的算术表达式求值

class YunSuanFu{
private int value;
private char key;
YunSuanFu(char key){
this.key=key;
if(this.key=='+'){
this.value=0;
}
if(this.key=='-'){
this.value=1;
}
if(this.key=='*'){
this.value=2;
}
if(this.key=='/'){
this.value=3;
}
if(this.key=='('){
this.value=4;
}
if(this.key==')'){
this.value=5;
}
if(this.key=='#'){
this.value=6;
}
}
public static int biJiao(YunSuanFu a,YunSuanFu b){
int n[][]={{1,1,-1,-1,-1,1,1},{1,1,-1,-1,-1,1,1},{1,1,1,1,-1,1,1},{1,1,1,1,-1,1,1},{-1,-1,-1,-1,-1,0,0},{1,1,1,1,0,1,1},{-1,-1,-1,-1,-1,0,0}};
return n[a.value][b.value];
}
}
class jiSuan{
private double result;
jiSuan(String s){
Stack NumberStack01=new Stack();
Stack FuHaoStack01=new Stack();
char temp01[]=s.toCharArray();
int i=0;
int flag=1;
while(!FuHaoStack01.isEmpty()||flag==1){
flag=0;
if(temp01[i]=='+'||temp01[i]=='-'||temp01[i]=='*'||temp01[i]=='/'||temp01[i]=='('||temp01[i]==')'||temp01[i]=='#'){
if(FuHaoStack01.isEmpty()){
FuHaoStack01.push(temp01[i]+"");
i++;
}else{
char temp02[]=FuHaoStack01.getTop().getData().toCharArray();
if(YunSuanFu.biJiao(new YunSuanFu(temp02[0]),new YunSuanFu(temp01[i]))<0){
FuHaoStack01.push(temp01[i]+"");
//System.out.println(temp01[i]);
i++;
}else{
if(YunSuanFu.biJiao(new YunSuanFu(temp02[0]),new YunSuanFu(temp01[i]))==0){
FuHaoStack01.pop();
i++;
}else{
if(YunSuanFu.biJiao(new YunSuanFu(temp02[0]),new YunSuanFu(temp01[i]))>0){
double n1=Double.parseDouble(NumberStack01.pop().getData());
double n2=Double.parseDouble(NumberStack01.pop().getData());
String temp=FuHaoStack01.pop().getData();
double n3=0;
if(temp.equals("+")){
n3=n1+n2;
}
if(temp.equals("-")){
n3=-n1+n2;
}
if(temp.equals("*")){
n3=n1*n2;
}
if(temp.equals("/")){
n3=n2/n1;
}
NumberStack01.push(n3+"");
}
}
}
}
}else{
String temp="";
while(temp01[i]=='1'||temp01[i]=='2'||temp01[i]=='3'||temp01[i]=='4'||temp01[i]=='5'||temp01[i]=='6'||temp01[i]=='7'||temp01[i]=='8'||temp01[i]=='9'||temp01[i]=='0'||temp01[i]=='.'){
temp=temp+temp01[i];
i++;
}
NumberStack01.push(temp);
}
}

this.result=Double.parseDouble(NumberStack01.getTop().getData());
}
public double getResult(){
return this.result;
}
}
public class SuanShuBiaoDaShiQiuZhiDemo {
public static YunSuanFu jia=new YunSuanFu('+');
public static YunSuanFu jian=new YunSuanFu('-');
public static YunSuanFu cheng=new YunSuanFu('*');
public static YunSuanFu chu=new YunSuanFu('/');
public static YunSuanFu zouKuoHao=new YunSuanFu('(');
public static YunSuanFu youKuoHao=new YunSuanFu(')');
public static YunSuanFu jingHao=new YunSuanFu('#');
public static void main(String args[]){
jiSuan _1=new jiSuan(

"#9996.1*8#");
System.out.println(_1.getResult());

}
}

相关文档
最新文档