📄 calculation.java
字号:
package calculation;
import java.util.Stack;
import javax.swing.*;
import java.util.Scanner;
public class Calculation{
Stack OPTR = new Stack();//符号
Stack OPND = new Stack();//数字
int a;
char[][] com =
{
{'>','>','<','<','<','>','>'},
{'>','>','<','<','<','>','>'},
{'>','>','>','>','<','>','>'},
{'>','>','>','>','<','>','>'},
{'<','<','<','<','<','=',' '},
{'>','>','>','>',' ','>','>'},
{'<','<','<','<','<',' ','='}
};
public static void main(String[] args)
{
new Calculation();
}
public Calculation()
{
int i=0;
char c;
int x;
String s;
System.out.println("输入式子:");
Scanner scan = new Scanner(System.in);
s=scan.nextLine();
OPTR.push('#');
while((c=s.charAt(i))!='#'||(Character)OPTR.peek()!='#')//符号不是#,前一个符号不是#
{
if(java.lang.Character.isDigit(c))//是数字
{
//System.out.println(c);
x=Integer.valueOf(c).intValue()-48;//数字转ASC码
//System.out.println(x);
OPND.push(x);
i++;
}
else
{
char o;
int m=op((Character)OPTR.peek());//前一个符号
int n=op(c);//当前符号
//System.out.println(com[m][n]);
switch(com[m][n]){
case'<':
{
OPTR.push(c);
i++;
break;
}
case'=':
{
OPTR.pop();//脱括号
i++;
break;
}
case'>':
{
o=(Character)OPTR.pop();//o=符号
int q=(Integer)OPND.pop();//符号后数字
int p=(Integer)OPND.pop();//符号前数字
switch(o)//计算,结果入栈
{
case'+': OPND.push(p+q);break;
case'-': OPND.push(p-q);break;
case'*': OPND.push(p*q);break;
case'/': OPND.push(p/q);break;
}
break;
}
}
}
}
System.out.println( "计算结果:"+OPND.pop());
}
int op(char f)
{
switch(f)
{
case'+': a=0;break;
case'-': a=1;break;
case'*': a=2;break;
case'/': a=3;break;
case'(': a=4;break;
case')': a=5;break;
case'#': a=6;break;
}
return a;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -