[問題] "2*13-4" 怎樣取得"13"而非"1"和"3"

看板java作者 (丁丁)時間15年前 (2009/06/04 21:44), 編輯推噓6(600)
留言6則, 6人參與, 最新討論串1/1
試寫一個計算器時,輸入如:"2*3-5/6" 或 "12.5*(10/2.0)-9/3" 把整行讀進來後,我用 for(i=0;i<str.length();i++) { if(str.charAt(i)>='0' && str.charAt(i)<='9' ) 則為數字(運算元) else 則為運算符號(運算子) } 可是這樣一來,遇到"12"這超過一位數的數字時,就沒辦法讀到"12", 只能讀到"1" "2" 請問要怎樣才能讀到整個數字呢 ?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.98.4

06/04 21:47, , 1F
1 * 10 + 2 這樣??
06/04 21:47, 1F

06/04 21:52, , 2F
我會拿 StringTokenizer 偷懶 XD
06/04 21:52, 2F

06/04 22:21, , 3F
regex+spilt
06/04 22:21, 3F

06/04 23:37, , 4F
Java當然是用regex...
06/04 23:37, 4F

06/05 04:44, , 5F
context-free grammar...
06/05 04:44, 5F

06/05 22:12, , 6F
印象可以用堆疊來做....
06/05 22:12, 6F
文章代碼(AID): #1A9y_Cif (java)