</pre><p><span style="font-size:18px;"><span style="background-color: rgb(255, 255, 255);"><span style="color:#33CC00;"><em>这是第一次创建博客 ,我想把它当成 成长日记的存在 保存自己的代码 并且和别人分享</em></span></span></span></p><p><span style="font-size:18px;"><span style="background-color: rgb(255, 255, 255);"><span style="color:#33CC00;"><em>英语不好 见谅<img alt="哭" src="http://static.blog.youkuaiyun.com/xheditor/xheditor_emot/default/cry.gif" /></em></span></span></span></p><p><span style="font-size:18px;"><span style="background-color: rgb(255, 255, 255);"><span style="color:#33CC00;"><em>/*</em></span></span></span></p><p><span style="font-size:18px;"><span style="background-color: rgb(255, 255, 255);"><span style="color:#33CC00;"><em>*栈的后进先出,运算符的优先级,</em></span></span></span></p><p><span style="font-size:18px;"><span style="background-color: rgb(255, 255, 255);"><span style="color:#33CC00;"><em>*当运算符和栈中运算符比较 优先级小 ,字符出栈进行计算,否则字符入栈</em></span></span></span></p><p><span style="font-size:18px;"><span style="background-color: rgb(255, 255, 255);"><span style="color:#33CC00;"><em>*/</em></span></span></span></p><p><img alt="微笑" src="http://static.blog.youkuaiyun.com/xheditor/xheditor_emot/default/smile.gif" /><img alt="微笑" src="http://static.blog.youkuaiyun.com/xheditor/xheditor_emot/default/smile.gif" /></p><p></p><p><pre name="code" class="java"> IntStack is=new IntStack();
charstack cs1=new charstack();
BiaoDaShiJiSuan bdsjs=new BiaoDaShiJiSuan();
cs1.ruzhan('#');
System.out.print("请输入表达式以#作为结束标志");
int temp=0,temp1=0;
String str1="";
//char c=sc.next().charAt(0);
char[] p7=sc.next().toCharArray();
while(p7[temp]!='#'||cs1.peek()!='#'){
if(bdsjs.in(p7[temp])){
str1+=p7[temp];
temp++;
temp1++;
}else{
if(temp1>0){
System.out.println("入栈成功 数字栈入栈成功");
is.ruzhan( new Integer(str1));//上面得出的数字字符串转换成字符后入栈
System.out.println(" "+new Integer(str1));
temp1=0;
str1="";
}
switch(bdsjs.panduan(cs1.peek(),p7[temp])){
case '<':
cs1.ruzhan(p7[temp]);
System.out.println("入栈成功 字符栈入栈成功");
//c=sc.next().charAt(0);
temp++;
break;
case '=':
cs1.chuzhan();
//c=sc.next().charAt(0);
System.out.println("入栈成功 字符栈出栈成功");
temp++;
break;
case'>':
is.ruzhan(bdsjs.jisuan(is.chuzhan(), cs1.chuzhan(), is.chuzhan()));
//c=sc.next().charAt(0);
System.out.println("入栈成功 数字计算后入栈成功");
break;
}
}
}
System.out.println("结果是"+is.chuzhan());
下面是判断优先级和是否是字符还有计算的方法
package stack;
public class BiaoDaShiJiSuan {
public boolean in(char i){
if(i>='0'&&i<='9'){
return true;
}else{
return false;
}
}
//对传入的东东进行计算
public int jisuan(int x,char f,int y){
switch(f){
case '+':
return x+y;
case '-':
return x-y;
case '*':
return x*y;
case '/':
return x/y;
}
return 0;
}
//封装一个计算的优先符问题
public char panduan(char x,char y){
switch(x){
case '+':
case '-':
if(y=='+'||y=='-'||y==')'||y=='#'){
return '>';
}
if(y=='*'||y=='/'||y=='('){
return '<';
}
break;
case '*':
case '/':
if(y=='+'||y=='*'||y=='/'||y=='-'||y==')'||y=='#'){
return '>';
}
if(y=='('){
return '<';
}
break;
case '(':
if(y=='+'||y=='*'||y=='/'||y=='-'||y=='('){
return '<';
}
if(y==')'){
return'=';
}
case ')':
if(y=='+'||y=='*'||y=='/'||y=='-'||y==')'||y=='#'){
return '>';
}
case '#':
if(y=='+'||y=='*'||y=='/'||y=='-'||y=='('){
return '<';
}
if(y=='#'){
return'=';
}
}
return '<';
}
}