📄 expressionlist.java
字号:
import java.io.*;
import java.lang.*;
public class ExpressionList
{
private StackList theStack;
public ExpressionList()
{
theStack=null;
}
public ExpressionList(String ex)
{
StackList stc = new StackList();
String postfix=" ";
for(int i=0;i<ex.length();i++)
{
if((ex.charAt(i)!='+')&&(ex.charAt(i)!='-')&&(ex.charAt(i)!='*')&&
(ex.charAt(i)!='/')&&(ex.charAt(i)!='(')&&(ex.charAt(i)!=')'))
{
postfix=postfix+ex.substring(i,i+1);
}
else
{
postfix=postfix+" ";
if (stc.isEmpty())
{
stc.push(ex.substring(i,i+1));
}
else if ( ex.charAt(i)=='(' )
{
stc.push(ex.substring(i,i+1));
}
else if (ex.charAt(i)==')')
{
while(!stc.top().equals("("))
{
postfix=postfix.trim()+" ";
postfix=postfix+stc.topAndPop();
}
stc.pop();
}
else if (ex.charAt(i)=='*' || ex.charAt(i)=='/')
{
if(stc.top().equals("*") || stc.top().equals("/"))
{
postfix=postfix.trim()+" ";
postfix=postfix+stc.topAndPop();
}
stc.push(ex.substring(i,i+1));
}
else if(ex.charAt(i)=='+' || ex.charAt(i)=='-')
{
while( (!stc.top().equals("(")) && ( !stc.isEmpty() ) )
{
postfix=postfix.trim()+" ";
postfix=postfix+stc.topAndPop();
}
stc.push(ex.substring(i,i+1));
}
else
{
System.out.println("Sorry");
}
postfix=postfix.trim()+" ";
}
}
while(!stc.isEmpty())
{
postfix=postfix.trim()+" ";
postfix=postfix+stc.topAndPop();
}
postfix=postfix.trim();
System.out.println(postfix);
//开始计算
String[] cal=postfix.split("\\s");
for (int i=0; i<cal.length; i++)
System.out.println(cal[i]);
boolean done=false;
while(!cal[1].equals("#"))
{
done=false;
double m=0;
double n=0;
int j=0;
for(int i=0;i<cal.length;i++)
{
if(cal[i].equals("*")||cal[i].equals("/")||cal[i].equals("+")
||cal[i].equals("-"))
{
m=Double.parseDouble(cal[i-2]);
n=Double.parseDouble(cal[i-1]);
if(cal[i].equals("*"))
m=m*n;
else if(cal[i].equals("/"))
m=m/n;
else if(cal[i].equals("+"))
m=m+n;
else
m=m-n;
cal[i-2]=Double.toString(m);
if((i+1)==cal.length){ cal[1]="#";break;}
cal[i-1]=cal[i+1];
for( j=i;j<cal.length-2;j++)
cal[j]=cal[j+2];
cal[j]="#";cal[j+1]="#";
done=true;
}
if(done)break;
}
}
System.out.println("The expression "+ex+"="+cal[0]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -