四則運算表達(dá)式求值
兩個要點
1.中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式
2.后綴表達(dá)式求值
中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式
從左到右遍歷中綴表達(dá)式的每個數(shù)字和符號.
若是數(shù)字就輸出,成為后綴表達(dá)式的一部分.
若是符號則判斷其與棧頂符號的優(yōu)先級,是右括號或者優(yōu)先級低于等于棧頂符號,則棧頂元素依次出棧并輸出,再將當(dāng)前的符號進(jìn)棧。一直到最終輸出后綴表達(dá)式為止。
后綴表達(dá)式求值
從左至右遍歷表達(dá)式的每個數(shù)字和符號,遇到數(shù)字就進(jìn)棧,遇到符號,就彈出棧頂兩個元素運算,再將運算結(jié)果入棧。一直到最終獲得結(jié)果。
JDK 1.7+
-
"9 + ( 3 - 1 ) * 3 + 10 / 2";
-
System.out.println(calc(target));
-
}
-
-
// 中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式
-
" ");
-
-
")":
-
"(")) {
-
'(')) {
-
result.addLast(ele);
-
}
-
}
-
"(":
-
stack.addFirst(c);
-
"+":
-
"-":
-
"*") || ele.equals("/") || ele.equals("+") || ele.equals("-")) {
-
result.addLast(stack.removeFirst());
-
} "*":
-
"/":
-
stack.addFirst(c);
-
"*") || ele.equals("/") || ele.equals("+") || ele.equals("-")) {
-
Float f1 = result.removeFirst();
-
Float f2 = result.removeFirst();
-
"+":
-
result.addFirst(f2 + f1);
-
"-":
-
result.addFirst(f2 - f1);
-
"*":
-
result.addFirst(f2 * f1);
-
"/":
-
result.addFirst(f2 / f1);
-
break;
-
}
-
} else {
-
result.addFirst(Float.valueOf(ele));
-
}
-
}
-
return result.removeFirst();
-
}
-
}
結(jié)果:
[9, 3, 1, -, 3, *, +, 10, 2, /, +]
20.0
本文名稱:四則運算表達(dá)式求值
瀏覽地址:http://www.chinadenli.net/article32/ishepc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、網(wǎng)站內(nèi)鏈、網(wǎng)站建設(shè)、App開發(fā)、網(wǎng)站制作、網(wǎng)站收錄
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源:
創(chuàng)新互聯(lián)