国产探花免费观看_亚洲丰满少妇自慰呻吟_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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 扬州市| 子长县| 平塘县| 灯塔市| 治多县| 顺昌县| 扎兰屯市| 屏边| 庄浪县| 筠连县| 凤阳县| 通城县| 麻栗坡县| 平山县| 克拉玛依市| 南木林县| 黄陵县| 涡阳县| 榆社县| 秀山| 凤冈县| 铜山县| 泾川县| 循化| 德庆县| 石楼县| 东兴市| 永年县| 林口县| 拉萨市| 徐闻县| 黄平县| 宁河县| 丰县| 凌海市| 曲周县| 无棣县| 江孜县| 徐州市| 卢氏县| 小金县|