資源簡介
java代碼實現中綴表達式轉后綴表達式,并計算結果
代碼片段和文件信息
package?com.mrwang.calculator;
import?java.util.Iterator;
import?java.util.Scanner;
import?java.util.Stack;
public?class?Calculator?{
//定義操作符常量
private?final?static?char?ADD?=?‘+‘;
private?final?static?char?SUBTRACT?=?‘-‘;
private?final?static?char?MULTIPLY?=?‘*‘;
private?final?static?char?DIVIDE?=?‘/‘;
public?static?void?main(String[]?args)?{
//?獲取輸入的值??
//?“3+(1*2)-(5+2)“
Scanner?in?=?new?Scanner(System.in);
System.out.println(“請輸入一個數學表達式:“);
String?expression?=?in.nextLine();
String?postfix?=?Calculator.infixToPostfix(expression);
System.out.println(postfix);
System.out.println(Calculator.calculator(postfix));
}
/**
?*?該方法用來將中綴表達式(數學表達式)轉為后綴表達式(逆波蘭表達式)
?*?Infix?to?Postfix?
?*?http://blog.fishc.com/2093.html/2#prettyPhoto?中綴表達式轉后綴表達式
?*?http://blog.tpircsboy.com/acm/poj-1686/??后綴表達式求值
?*?http://www.aijava.cn/13197.html
?*?@param?infixPression
?*?@return
?*/
public?static?String?infixToPostfix(String?infixexpression){
Stack?S1?=?new?Stack();//?運算符棧
Stack?S2?=?new?Stack();//?表達式棧
int?len?=?infixexpression.length();?//?中綴表達式的長度
int?index?=?0;
while(index? char?c?=?infixexpression.charAt(index);
switch(c){
case?‘(‘:
S1.push(c);
break;
case?‘)‘:
while(S1.peek()?!=?‘(‘)?{
S2.push(S1.pop());
}
S1.pop();
break;
case?ADD:
case?SUBTRACT:
while(!S1.empty()?&&?S1.peek()?!=?‘(‘)?{
S2.push(S1.pop());
}
S1.push(c);
break;
case?MULTIPLY:
case?DIVIDE:
w
- 上一篇:JavaToExe,jar轉exe
- 下一篇:Java實現KMeans點集文件
評論
共有 條評論