溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

四則運算表達式求值

發布時間:2020-08-10 21:46:49 來源:ITPUB博客 閱讀:168 作者:壹頁書 欄目:編程語言
四則運算表達式求值
兩個要點
1.中綴表達式轉后綴表達式
2.后綴表達式求值

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

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女