计算器:输入一段计算式字符串得出运算结果
列如输入字符串: 10+60*(20+23)-[(23+5)*2]
然后按下按钮就可以得出运算结果
计算式有优先等级。
请问谁有类似代码,或者该怎么写。
[email protected]
列如输入字符串: 10+60*(20+23)-[(23+5)*2]
然后按下按钮就可以得出运算结果
计算式有优先等级。
请问谁有类似代码,或者该怎么写。
[email protected]
解决方案 »
- 求判断一个数是否存在一列数组中的代码
- 求一仿QQ界面的swing程序
- statement.executeUpdate(sql语句)一般返回什么值啊
- 这个包该怎么调用啊!!!!!!????
- 小问题
- 哪位用过jtpai有什么学习资料吗?必有重谢!!!!!
- 继续高分!
- 下面代码有内存泄漏吗?如果是C代码呢
- 在I/O Stream中怎么控制将Unicode码转为ASCII码?详情请进
- 请问在swing里,getContentPane(),getRootPane(),JScrollPane,JPanel,究竟是怎样一种包含关系,以及相关问题...
- JAVA中的问题
- 如何把Iterator<Integer>转换为int型
或者用C++的stack容器
//Push入栈
//Pop出栈
char c,theta;
int a,b;
SqStackC OPTR;//运算符栈
SqStackI OPND;//运算数栈
char op[7][7]={{'>','>','<','<','<','>','>'},{'>','>','<','<','<','>','>'},
{'>','>','>','>','<','>','>'},{'>','>','>','>','<','>','>'},{'<','<','<','<','<','=',' '},
{'>','>','>','>',' ','>','>'},{'<','<','<','<','<',' ','='}};//算符间的优先关系表示int judge(char ope){
switch(ope){
case '+':return 0;
case '-':return 1;
case '*':return 2;
case '/':return 3;
case '(':return 4;
case ')':return 5;
case '#':return 6;
}
return ERROR;
}//判断栈顶字符和输入字符对应的位置以判断优先级char Precede(CharSElem ope,char c){
int a,b;
a = judge(ope);b = judge(c);
return op[a][b];
}//返回优先级int Operate(int a,char theta,int b)
{
switch(theta){
case '+':return a+b;
case '-':return a-b;
case '*':return a*b;
case '/':return a/b;
}
return ERROR;
}//对操作数进行运算int change(char c){
return 0+c-48;
}int EvaluateExpression(){
InitStack(OPTR);
Push(OPTR,'#');
InitStack(OPND);
c = getchar();
while(c != '#'||GetTop(OPTR) != '#'){
if(c!='+'&&c!='-'&&c!='*'&&c!='/'&&c!='('&&c!=')'&&c!='#'){
Push(OPND,change(c));c = getchar();}
else
switch(Precede(GetTop(OPTR),c)){
case '<':Push(OPTR,c);
c = getchar();
break;
case '=':Pop(OPTR,theta);
c = getchar();
break;
case '>':Pop(OPTR,theta);
Pop(OPND,b);
Pop(OPND,a);
Push(OPND,Operate(a,theta,b));
break;
}
}
return GetTop(OPND);
}//对输入的表达式进行解释执行int main()
{
//int n;
printf("请输入表达式,以“#”结束:\n");
//n=EvaluateExpression();
printf("%d\n",EvaluateExpression());
return 0;
}
public static void main(String[] args) throws Exception {
System.out.println(eval("1+2"));
System.out.println(eval("1+2*3"));
System.out.println(eval("(1+2)*3-4"));
} public static Number eval(String expression) throws Exception {
ScriptEngine engine = new ScriptEngineManager()
.getEngineByName("javascript");
return (Number)engine.eval(expression);
}
,该咋办