四則運算表達式求值

四則運算表達式求值
兩個要點
1.中綴表達式轉后綴表達式
2.后綴表達式求值

中綴表達式轉后綴表達式
從左到右遍歷中綴表達式的每個數(shù)字和符號.
若是數(shù)字就輸出,成為后綴表達式的一部分.
若是符號則判斷其與棧頂符號的優(yōu)先級,是右括號或者優(yōu)先級低于等于棧頂符號,則棧頂元素依次出棧并輸出,再將當前的符號進棧。一直到最終輸出后綴表達式為止。

后綴表達式求值
從左至右遍歷表達式的每個數(shù)字和符號,遇到數(shù)字就進棧,遇到符號,就彈出棧頂兩個元素運算,再將運算結果入棧。一直到最終獲得結果。

JDK 1.7+

  1. "9 + ( 3 - 1 ) * 3 + 10 / 2";  
  2.         System.out.println(calc(target));  
  3.     }  
  4.   
  5.     // 中綴表達式轉后綴表達式  
  6.     " ");  
  7.   
  8.         ")":  
  9.                 "(")) {  
  10.                     '(')) {  
  11.                         result.addLast(ele);  
  12.                     }  
  13.                 }  
  14.                 "(":  
  15.                 stack.addFirst(c);  
  16.                 "+":  
  17.             "-":  
  18.                 "*") || ele.equals("/") || ele.equals("+") || ele.equals("-")) {  
  19.                         result.addLast(stack.removeFirst());  
  20.                     } "*":  
  21.             "/":  
  22.                 stack.addFirst(c);  
  23.                 "*") || ele.equals("/") || ele.equals("+") || ele.equals("-")) {  
  24.                 Float f1 = result.removeFirst();  
  25.                 Float f2 = result.removeFirst();  
  26.                 "+":  
  27.                     result.addFirst(f2 + f1);  
  28.                     "-":  
  29.                     result.addFirst(f2 - f1);  
  30.                     "*":  
  31.                     result.addFirst(f2 * f1);  
  32.                     "/":  
  33.                     result.addFirst(f2 / f1);  
  34.                     break;  
  35.                 }  
  36.             } else {  
  37.                 result.addFirst(Float.valueOf(ele));  
  38.             }  
  39.         }  
  40.         return result.removeFirst();  
  41.     }  
  42. }  

結果:
[9, 3, 1, -, 3, *, +, 10, 2, /, +]
20.0

本文名稱:四則運算表達式求值
瀏覽地址:http://www.muchs.cn/article32/ishepc.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供Google、網站內鏈、網站建設、App開發(fā)、網站制作、網站收錄

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿網站建設