1. 程式人生 > 其它 >Java學習——資料結構之棧實現計算器(二)

Java學習——資料結構之棧實現計算器(二)

在文章 Java學習——資料結構之棧實現計算器(一) - 匿餘 - 部落格園 (cnblogs.com) 中,對棧實現計算器開始了初步的實現,不足之處在於其運算元只能時一位數而不能是多位數,在本篇文章中將對它進行程式碼的一些優化,即運算元可以為多位的加減乘除計算器的實現。

優化思路分析:

  • 在依次掃描表示式的值時,若掃描到多位運算元,則可知:若第一位為數字那麼第二位也為數,因此掃描到的字元為數字時應當連續判斷該數字後的符號是不是數字。

  • 當掃描到表示式的最後一個符號為數字時,直接入數棧,不需要進行判斷。

優化後的程式碼實現:

若掃描到的是數字,則程式程式碼根據文章Java學習——資料結構之棧實現計算器(一) - 匿餘 - 部落格園 (cnblogs.com)

修改如下:

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="";
            }