java如何求出字串表示式的結果?如「23 4 5 56 4 (2 5 4)」

2021-04-17 11:26:18 字數 1264 閱讀 7808

1樓:匿名使用者

算術表達抄式 求值的經典方法 就是把 中綴表示式轉化成 字尾表示式,演算法如下:

1,初始化一個空堆疊,將結果字串變數置空。

2,從左到右讀入中綴表示式,每次一個字元。

3,如果字元是運算元,將它新增到結果字串。

4,如果字元是個操作符,彈出(pop)操作符,直至遇見開括號(opening parenthesis)、優先順序較低的操作符或者同一優先順序的右結合符號。把這個操作符壓入(push)堆疊。

5,如果字元是個開括號,把它壓入堆疊。

6,如果字元是個閉括號(closing parenthesis),在遇見開括號前,彈出所有操作符,然後把它們新增到結果字串。

7,如果到達輸入字串的末尾,彈出所有操作符並新增到結果字串。

這個是 donald knuth 於 2023年 描述的.

比如 2+3*4+(2+3)*5 轉換成字尾表示式為: 234*+23+5*+

對字尾表示式求值 就不難了,

從左到右讀入字尾表示式

如果字元是一個運算元,把它壓入堆疊。

如果字元是個操作符,彈出兩個運算元,執行恰當操作,然後把結果壓入堆疊到字尾表示式末尾,從堆疊中彈出結果。

2樓:孫連濤

你可以自己寫個演算法去解析字串中的加減乘除括號等特殊字元,然後在計算。或者你寫個儲存過程,通過資料庫的計算機制來計算。

計算:(1)-2-5+19-13+1=______(2)12×(?56)×311÷114=______(3)17-8÷(-2)+4×(-3)=______(4

3樓:手機使用者

(1)-2-5+19-13+1,

=-7+19-12,

=0;(bai2)12×

du(?5

6)×3

11÷zhi114,

=-12×56

×311×45

,=-111;

(3)17-8÷(dao-2)+4×(-3),=17+4-12,

=9;(4)(-16+3

4-112)×

專48,=12

×48,

=24;

(5)(?2)

?|屬?7|?2×(?12),

=4-7+1,

=-2;

(6)?4

5×[(?1

2)÷(0.75?1)+(?2)

],=-4

5×(2-32),

=24.

在C語言裡,如何使用正規表示式拿到字串「L內容L」裡的「內容」

你是要解析xml檔案還是html檔案?看這種標籤可以用xml方式解析的。當然正則也可以。更簡單的就是兩次replace replace 按照你的要求編寫的程式如下 c 中如何取字串中指定的內容?string source d5 ca ba c5 84346333 0d 0a c3 dc c2 eb ...

用正規表示式怎樣匹配不包含特定字串的字串

為字串。另外列舉一些正規表示式的語法 abc a或b或c 任意單個字元 a?零個或一個a abc 任意不是abc的字元 s 空格 a 零個或多個a a z a z的任意字元 s 非空格 a 一個或多個a a za z 字串函式 string processing function 也叫字串處理函式,...

c語言中如何輸入輸出字串

在c語言中,輸入輸出字串有以下兩種方式 1 用scanf printf輸入輸出。scanf printf是c語言的格式化輸入輸出函式,可以用於輸入輸出各種基礎型別,字串 char 也 其支援範圍內。格式化字元為 s。定義char str 100 輸入scanf s str 輸出printf s st...