国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

Java實現中序表達式的實例代碼

2024-07-14 08:41:58
字體:
來源:轉載
供稿:網友

什么是中序表達式

前序(前綴)表達式要求每一個操作符出現在其操作數之前.一般不用. 寫表達式的后序表達式一般是為了便利于計算機編程中棧的實現,所以用的較多.

具體代碼如下所示:

package 表達式求值;import java.util.Stack;/* * 中序表達式求值實現 */public class CenterExpression { public double evaluate(String expression){ //傳入中序表達式  char [] ex = expression.toCharArray();  Stack<Double> num = new Stack<>();  Stack<Character> ops = new Stack<>();  for(int i = 0; i < ex.length; i++){  //循環將表達式依次入棧   char c = ex[i];   if(c < '9' && c > '0'){    num.push(Double.parseDouble(Character.toString(c)));   }   else if(c == '('){    ops.push('(');   }   else if(c == ')'){    while(true){     char op = ops.pop();     if(op == '('){      break;     }     else{      switch(op){      case '+':num.push(num.pop()+num.pop());break;      case '-':num.push(num.pop()-num.pop());break;      case '*':num.push(num.pop()*num.pop());break;      case '/':num.push(num.pop()/num.pop());break;      default:break;      }     }    }   }   else if(ops.empty() && (c == '+' || c == '-' || c == '*' || c == '/')){    ops.push(c);   }   else if(!ops.isEmpty() && (c == '+' || c == '-' || c == '*' || c == '/')){    char op =ops.peek();    while((op == '*' || op == '/') && (c == '+' || c == '-')){     op = ops.pop();     switch(op){     case '+':num.push(num.pop()+num.pop());break;     case '-':num.push(num.pop()-num.pop());break;     case '*':num.push(num.pop()*num.pop());break;     case '/':num.push(num.pop()/num.pop());break;     default:break;     }     if(ops.isEmpty()){      break;     }     else{      op = ops.peek();     }    }    ops.push(c);   }  }  while(!ops.isEmpty()){  //處理剩余可以按計算機掃描順序處理的表達式   char op =ops.pop();   switch(op){   case '+':num.push(num.pop()+num.pop());break;   case '-':num.push(num.pop()-num.pop());break;   case '*':num.push(num.pop()*num.pop());break;   case '/':num.push(num.pop()/num.pop());break;   default:break;   }  }  return num.pop(); } public static void main(String [] args){  CenterExpression exp = new CenterExpression();  System.out.println(exp.evaluate("1*2+5*3")); }}

總結

以上所述是小編給大家介紹的Java實現中序表達式的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 靖远县| 陇南市| 化德县| 容城县| 赞皇县| 犍为县| 汉中市| 山阳县| 苍南县| 丰县| 遵化市| 新和县| 兴义市| 渝北区| 柳河县| 英吉沙县| 青河县| 黄石市| 河津市| 遂宁市| 天长市| 巩义市| 六盘水市| 苍梧县| 三台县| 隆昌县| 泗洪县| 景宁| 常德市| 台中县| 砚山县| 来安县| 铁岭市| 津南区| 万全县| 奇台县| 桐庐县| 青州市| 绵阳市| 固安县| 申扎县|