麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > 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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品一区二区视频 | 超碰97在线人人 | free台湾极品性hd | 久久国产精品电影 | 日美黄色片| 国产精品久久久久久久av | 亚洲国产精品久久久久久久久 | 美女视频在线观看黄 | 免费久久久久久 | 日韩视频在线免费 | 欧美成人久久 | 欧美成人精品一区二区男人小说 | 亚洲一区久久 | 国产精品a一 | av亚洲在线观看 | 成人在线不卡 | 精品一区二区三区毛片 | 日韩精品中文字幕在线观看 | 色综合久久久久综合99 | 免费视频a | 欧美3p激情一区二区三区猛视频 | 久久精品无码一区二区三区 | 国产99久久精品一区二区 | 色诱亚洲精品久久久久久 | 99久久精品免费 | 毛片免费视频播放 | 久久色网站 | 正在播放91精 | 国产精品亚洲综合 | 国产精品一区二区三区在线看 | 91精品动漫在线观看 | 精品一区二区三区免费视频 | 91精品久久久久久久久 | av成人免费 | 国产亚洲精品久久久久5区 男人天堂免费 | 99成人在线 | 免费毛片儿 | 性高跟鞋xxxxhd4kvideos | 失禁高潮抽搐喷水h | 国产一国产精品一级毛片 | 爱射av |