早教吧 育儿知识 作业答案 考试题库 百科 知识分享

英语翻译publicdoubleCalculator(Stringf)//计算{inti=0,j=0,k;charc;StringBuffers=newStringBuffer();s.append(f);s.append('=');Stringformula=s.toString();//转化为string类型char[]anArray;anArray=newchar[50];Stackmystack=newStack();w

题目详情
英语翻译
public double Calculator(String f)//计算
{
int i=0,j=0,k;
char c;
StringBuffer s=new StringBuffer();
s.append(f);
s.append('=');
String formula=s.toString();//转化为string类型
char[] anArray;
anArray=new char[50];
Stack mystack=new Stack();
while(formula.charAt(i)!='=')
{
c=formula.charAt(i);
switch(c)
{
case '+':
case '-':
while(!mystack.empty()&&mystack.peek().charValue()!='/')
{
anArray[j++]=mystack.pop().charValue();
}
mystack.push(new Character(c));
i++;
break;
case '*':
case '/':
while(!mystack.empty()&&(mystack.peek().charValue()=='*'||mystack.peek().charValue()=='/'))
{
anArray[j++]=mystack.pop().charValue();
}
mystack.push(new Character(c));
i++;
break;
default:while((c>='0'&&c
▼优质解答
答案和解析
一般你这种要出入栈的计算器是可以计算表达式的,如可以直接输入2-4*3+4,一般有两个栈,数字栈和符号栈,如上面表达式,数字栈压入2,4;符号栈压入-;当取*号的时候,因为*的优先级比-大所有会将4弹出和3运算然后将12压回数字栈,结果是2,12;符号栈是-;然后取+,比较+与-优先级,同级的从左都右运算,直接压入栈,数字栈为2,12,4;符号栈是-,+;遇到表达式结束符,然后弹出一个符号两个数,运算后将结果压回数字栈,弹出加号,结果是2,16;弹出减号是最终结果14;然后输出结果.要是有括号的可以递归括号内的表达式.详细可百度表达式的栈运算.程序我没看,很多又没格式.