最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實現(xiàn)中序表達式的實例代碼

 更新時間:2018年08月08日 10:45:28   作者:白衣風(fēng)塵嘆  
這篇文章主要介紹了Java實現(xiàn)中序表達式的實例代碼,需要的朋友可以參考下

什么是中序表達式

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

具體代碼如下所示:

package 表達式求值;
import java.util.Stack;
/*
 * 中序表達式求值實現(xiàn)
 */
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++){  //循環(huán)將表達式依次入棧
   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"));
 }
}

總結(jié)

以上所述是小編給大家介紹的Java實現(xiàn)中序表達式的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • java實現(xiàn)md5加密示例

    java實現(xiàn)md5加密示例

    這篇文章主要介紹了java實現(xiàn)md5加密示例,需要的朋友可以參考下
    2014-05-05
  • MyBatis一對一級聯(lián)更新問題小結(jié)

    MyBatis一對一級聯(lián)更新問題小結(jié)

    日常工作中經(jīng)常會涉及到一對一級聯(lián)更新的問題,本文主要介紹了MyBatis一對一級聯(lián)更新問題小結(jié),具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • SpringBoot+Netty+WebSocket實現(xiàn)消息發(fā)送的示例代碼

    SpringBoot+Netty+WebSocket實現(xiàn)消息發(fā)送的示例代碼

    這篇文章主要介紹了SpringBoot+Netty+WebSocket實現(xiàn)消息發(fā)送的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Mybatis使用useGeneratedKeys獲取自增主鍵的方法

    Mybatis使用useGeneratedKeys獲取自增主鍵的方法

    這篇文章主要給大家介紹了關(guān)于Mybatis使用useGeneratedKeys獲取自增主鍵的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Mybatis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • SpringBoot2 實現(xiàn)JPA分頁和排序分頁的案例

    SpringBoot2 實現(xiàn)JPA分頁和排序分頁的案例

    這篇文章主要介紹了SpringBoot2 實現(xiàn)JPA分頁和排序分頁的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Spring Boot統(tǒng)一異常攔截實踐指南(最新推薦)

    Spring Boot統(tǒng)一異常攔截實踐指南(最新推薦)

    本文介紹了Spring Boot中統(tǒng)一異常處理的重要性及實現(xiàn)方案,包括使用`@ControllerAdvice`和`@ExceptionHandler`注解,實現(xiàn)全局異常處理和統(tǒng)一響應(yīng)格式,本文給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2025-02-02
  • Java多線程同步工具類CyclicBarrier的使用

    Java多線程同步工具類CyclicBarrier的使用

    本文主要介紹了Java多線程同步工具類CyclicBarrier的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • DTD驗證xml格式的三種方式詳解

    DTD驗證xml格式的三種方式詳解

    這篇文章主要介紹了DTD驗證xml格式的三種方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • 解決java.lang.IllegalArgumentException異常問題

    解決java.lang.IllegalArgumentException異常問題

    這篇文章主要介紹了解決java.lang.IllegalArgumentException異常問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • springboot + jpa實現(xiàn)刪除數(shù)據(jù)的操作代碼

    springboot + jpa實現(xiàn)刪除數(shù)據(jù)的操作代碼

    這篇文章主要介紹了springboot + jpa實現(xiàn)刪除數(shù)據(jù)的操作代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-05-05

最新評論

同德县| 青神县| 二连浩特市| 轮台县| 静宁县| 扎兰屯市| 莲花县| 神木县| 法库县| 临西县| 肥西县| 无棣县| 定襄县| 宜宾县| 屏东县| 秭归县| 沈阳市| 甘洛县| 衡南县| 莱西市| 南平市| 泽库县| 闽侯县| 广宗县| 保康县| 乌拉特后旗| 盘山县| 仁怀市| 军事| 安岳县| 建水县| 昌邑市| 饶阳县| 普洱| 津市市| 安庆市| 石林| 内黄县| 大名县| 清河县| 双辽市|