Java學習——資料結構之棧實現計算器(二)
阿新 • • 發佈:2021-12-01
在文章
優化思路分析:
-
在依次掃描表示式的值時,若掃描到多位運算元,則可知:若第一位為數字那麼第二位也為數,因此掃描到的字元為數字時應當連續判斷該數字後的符號是不是數字。
-
當掃描到表示式的最後一個符號為數字時,直接入數棧,不需要進行判斷。
優化後的程式碼實現:
若掃描到的是數字,則程式程式碼根據文章
if(!isOp(index)){ //掃描到的是數字,則對其後一位進行判斷
keepNum +=index;
//沒有掃描到表示式的最後 且後一位是數字 //count != s.length() - 1判斷條件需要放在最前面,防止後面的判斷條件中的substring()出現溢位錯誤 while ((count != s.length() - 1)&&!isOp(s.substring(count + 1).charAt(0))) { index= s.substring(count + 1).charAt(0); keepNum += index; count++; }
numStack.push(Integer.parseInt(keepNum)); keepNum=""; }