溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

四則運(yùn)算表達(dá)式求值

發(fā)布時(shí)間:2020-08-10 21:46:49 來源:ITPUB博客 閱讀:128 作者:壹頁(yè)書 欄目:編程語言
四則運(yùn)算表達(dá)式求值
兩個(gè)要點(diǎn)
1.中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式
2.后綴表達(dá)式求值

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

后綴表達(dá)式求值
從左至右遍歷表達(dá)式的每個(gè)數(shù)字和符號(hào),遇到數(shù)字就進(jìn)棧,遇到符號(hào),就彈出棧頂兩個(gè)元素運(yùn)算,再將運(yùn)算結(jié)果入棧。一直到最終獲得結(jié)果。

JDK 1.7+

  1. "9 + ( 3 - 1 ) * 3 + 10 / 2";  
  2.         System.out.println(calc(target));  
  3.     }  
  4.   
  5.     // 中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式  
  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. }  

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

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI