一、實現表示式求值有兩種方法
二、棧的基本思想
按照基本思想 View裡寫每個按鈕 並且使用Masonry進行佈局(應該使用百分比)
ViewController中
定義兩個NSMutableString來存放獲取的值, 通過appendString進行不斷附加到兩個NSMutableString中(為什麼是兩個?後面會有一個加結束符的操作如果一直用一個 那麼這個結束符就儲存到陣列中直接輸出了)同樣在viewcontroller中進行獲取時的一些判錯問題以及最後答案刪除多餘0的問題
在一系列判斷結束後 如果按下‘=’那麼就將我們獲取的陣列賦值給model的陣列 在model中進行判斷與計算 需要注意在賦值時在最後再添一個井號為輸入結束判斷符以確保輸入結束
在Model中首先需要兩個NSMutableArray型陣列,一個就是運運算元的棧,一個是數位的棧 思想和c直接拿中綴式一樣 不過語言變成了oc 並且沒有用結構體而是用兩個陣列 所以函數也有一定的改變 簡單的入棧(通過強制型別轉換強行插入到需要陣列的) 出棧(remove最後一個元素) 獲取棧頂元素(沒有這個函數 因為可以直接通過陣列的最後一個元素來決定)其他差不多
還有最重要的一塊 NSArray即oc裡的陣列,它可以儲存不同的物件,但不能儲存基本資料型別,int ,char,double等基本資料型別不能直接儲存,需要通過轉換成物件才能加入陣列。所以我們需要匯出其中的陣列時 將需要的陣列元素進行強制轉換然後才能進行加減乘除進行計算
有了此處程式碼,我們進行就可以進行下面這樣強制型別轉換然後進行計算了