亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2018年08月08日 10:45:28   作者:白衣風塵嘆  
這篇文章主要介紹了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)中序表達式的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Java interceptor攔截器的方法

    Java interceptor攔截器的方法

    java里的攔截器是動態(tài)攔截Action調(diào)用的對象,它提供了一種機制可使開發(fā)者在一個Action執(zhí)行的先后執(zhí)行一段代碼,也能夠在一個Action,接下來通過本文給大家介紹Java interceptor攔截器的方法,感興趣的朋友一起看看吧
    2022-01-01
  • SpringBoot?整合MyBatis+MyBatis-Plus+MyBatisX插件使用

    SpringBoot?整合MyBatis+MyBatis-Plus+MyBatisX插件使用

    本文主要介紹了SpringBoot?整合MyBatis+MyBatis-Plus+MyBatisX插件使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-04-04
  • jdk-logging?log4j?logback日志系統(tǒng)實現(xiàn)機制原理介紹

    jdk-logging?log4j?logback日志系統(tǒng)實現(xiàn)機制原理介紹

    這篇文章主要介紹了jdk-logging、log4j、logback日志介紹以及三個日志系統(tǒng)的實現(xiàn)機制,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • Java源碼解析HashMap的tableSizeFor函數(shù)

    Java源碼解析HashMap的tableSizeFor函數(shù)

    今天小編就為大家分享一篇關(guān)于Java源碼解析HashMap的tableSizeFor函數(shù),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • redis深入淺出分布式鎖實現(xiàn)上篇

    redis深入淺出分布式鎖實現(xiàn)上篇

    在單體應(yīng)用中,如果我們對共享數(shù)據(jù)不進行加鎖操作,會出現(xiàn)數(shù)據(jù)一致性問題,我們的解決辦法通常是加鎖。下面我們一起聊聊使用redis來實現(xiàn)分布式鎖
    2022-08-08
  • Spring Boot 常用注解大全

    Spring Boot 常用注解大全

    這篇文章主要介紹了Spring Boot 常用注解大全,需要的朋友可以參考下
    2024-02-02
  • Java程序員常犯的五個錯誤

    Java程序員常犯的五個錯誤

    這篇文章總結(jié)以前經(jīng)驗針對java編程的一些習慣,給出一些關(guān)于java編程的建議: 當你開始成為一個程序員的時候,在編程的時候很容易陷入下面所述的一些壞習慣,下面把Java程序員常犯的五個錯誤整理如下,需要的朋友可以參考下
    2015-07-07
  • JAVA獲取Image的三種方式

    JAVA獲取Image的三種方式

    這篇文章主要介紹了JAVA獲取Image的三種方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Springboot @Configuration與自動配置詳解

    Springboot @Configuration與自動配置詳解

    這篇文章主要介紹了SpringBoot中的@Configuration自動配置,在進行項目編寫前,我們還需要知道一個東西,就是SpringBoot對我們的SpringMVC還做了哪些配置,包括如何擴展,如何定制,只有把這些都搞清楚了,我們在之后使用才會更加得心應(yīng)手
    2022-07-07
  • 用java實現(xiàn)的獲取優(yōu)酷等視頻縮略圖的實現(xiàn)代碼

    用java實現(xiàn)的獲取優(yōu)酷等視頻縮略圖的實現(xiàn)代碼

    想獲取優(yōu)酷等視頻縮略圖,在網(wǎng)上沒有找到滿意的資料,參考了huangdijia的PHP版工具一些思路,寫了下面的JAVA版代碼。。其實也可以做成JS版的
    2013-05-05

最新評論