1. 程式人生 > >20175229許鈺瑋 2018-2019-2《Java程序設計》結對編程項目-四則運算 第一周 階段性總結

20175229許鈺瑋 2018-2019-2《Java程序設計》結對編程項目-四則運算 第一周 階段性總結

net .org neu details dea image 上傳 .com 第一周

20175229許鈺瑋 2018-2019-2《Java程序設計》結對編程項目-四則運算 第一周 階段性總結

需求分析

  • 自動生成四則運算題目(加、減、乘、除)。
  • 既可以用前綴算法(波蘭算法)實現加減乘除也可以用後綴算法實現。
  • 支持復合運算。

設計思路

  • 首先我們先實現前綴表達式的方法,通過閱讀材料大致了解到如下方法:
  • 前綴表達式的計算機求值:
    從右至左掃描表達式,遇到數字時,將數字壓入堆棧,遇到運算符時,彈出棧頂的兩個數,用運算符對它們做相應的計算(棧頂元素 op 次頂元素),並將結果入棧;重復上述過程直到表達式最左端,最後運算得出的值即為表達式的結果。
    例如前綴表達式“- × + 3 4 5 6”:

(1) 從右至左掃描,將6、5、4、3壓入堆棧;

(2) 遇到+運算符,因此彈出3和4(3為棧頂元素,4為次頂元素,註意與後綴表達式做比較),計算出3+4的值,得7,再將7入棧;

(3) 接下來是×運算符,因此彈出7和5,計算出7×5=35,將35入棧;

(4) 最後是-運算符,計算出35-6的值,即29,由此得出最終結果。
可以看出,用計算機計算前綴表達式的值是很容易的。

  • 隨後後綴表達式實現方法上與前綴有異同之處:
  • 後綴表達式的計算機求值:
    與前綴表達式類似,只是順序是從左至右:
    從左至右掃描表達式,遇到數字時,將數字壓入堆棧,遇到運算符時,彈出棧頂的兩個數,用運算符對它們做相應的計算(次頂元素 op?棧頂元素),並將結果入棧;重復上述過程直到表達式最右端,最後運算得出的值即為表達式的結果。
    例如後綴表達式“3 4 + 5 × 6 -”:

(1) 從左至右掃描,將3和4壓入堆棧;

(2) 遇到+運算符,因此彈出4和3(4為棧頂元素,3為次頂元素,註意與前綴表達式做比較),計算出3+4的值,得7,再將7入棧;

(3) 將5入棧;
(4)?接下來是×運算符,因此彈出5和7,計算出7×5=35,將35入棧;

(5) 將6入棧;

(6) 最後是-運算符,計算出35-6的值,即29,由此得出最終結果。

UML圖

技術分享圖片

測試說明

  • 正常測試
    技術分享圖片
  • 異常測試
    技術分享圖片
  • 邊界測試
    技術分享圖片

碼雲連接

參考資料

  • 逆波蘭算法
  • 前綴解析
  • IDEA上傳至碼雲

20175229許鈺瑋 2018-2019-2《Java程序設計》結對編程項目-四則運算 第一周 階段性總結