?? calculation.java
字號(hào):
package calculation;
import java.util.Stack;
import javax.swing.*;
import java.util.Scanner;
public class Calculation{
Stack OPTR = new Stack();//符號(hào)
Stack OPND = new Stack();//數(shù)字
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()!='#')//符號(hào)不是#,前一個(gè)符號(hào)不是#
{
if(java.lang.Character.isDigit(c))//是數(shù)字
{
//System.out.println(c);
x=Integer.valueOf(c).intValue()-48;//數(shù)字轉(zhuǎn)ASC碼
//System.out.println(x);
OPND.push(x);
i++;
}
else
{
char o;
int m=op((Character)OPTR.peek());//前一個(gè)符號(hào)
int n=op(c);//當(dāng)前符號(hào)
//System.out.println(com[m][n]);
switch(com[m][n]){
case'<':
{
OPTR.push(c);
i++;
break;
}
case'=':
{
OPTR.pop();//脫括號(hào)
i++;
break;
}
case'>':
{
o=(Character)OPTR.pop();//o=符號(hào)
int q=(Integer)OPND.pop();//符號(hào)后數(shù)字
int p=(Integer)OPND.pop();//符號(hào)前數(shù)字
switch(o)//計(jì)算,結(jié)果入棧
{
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( "計(jì)算結(jié)果:"+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;
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -